[Bug c++/48446] internal compiler error: in gimplify_var_or_parm_decl, at gimplify.c:1946

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Apr 5 11:14:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48446

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-on-valid-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2011.04.05 11:13:04
     Ever Confirmed|0                           |1
      Known to fail|                            |4.3.5, 4.5.2, 4.6.0

--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-04-05 11:13:04 UTC ---
Confirmed.  Seems to have always crashed.  ICC accepts it.

Reduced testcase:

namespace std {
    typedef long unsigned int size_t;
}
typedef unsigned char uint8_t;
template<typename T> class RefPtr {
public:
    ~RefPtr();
    T *operator->() const;
};
class Message {
public:
    typedef RefPtr<Message> Ptr;
    static Ptr create(const void *data, std::size_t len);
};
template<std::size_t N> class BitArray {
public:
    static const std::size_t byte_count = (N + 7) / 8;
};
class Recipient {
public:
    typedef RefPtr<Recipient> Ptr;
    BitArray<80> data;
};
class Sender {
    Recipient::Ptr recipient(unsigned int i);
    void flush();
};
void Sender::flush()
{
    uint8_t buffer[64 / (recipient(0)->data.byte_count +
2)][recipient(0)->data.byte_count + 2];
    std::size_t wptr = 0;
    if (wptr == sizeof(buffer) / sizeof(*buffer)) {
        Message::Ptr msg = Message::create(buffer, wptr * sizeof(buffer[0]));
    }
}



More information about the Gcc-bugs mailing list