[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