[Bug rtl-optimization/48549] New: [4.6/4.7 Regression] Combiner ICE with -g
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Apr 11 06:33:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48549
Summary: [4.6/4.7 Regression] Combiner ICE with -g
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: rtl-optimization
AssignedTo: jakub@gcc.gnu.org
ReportedBy: jakub@gcc.gnu.org
void
foo (void *from, void *to)
{
long offset = reinterpret_cast <long>(to) - reinterpret_cast <long>(from);
if (offset != static_cast <int>(offset))
*(int *) 0xC0DE = 0;
reinterpret_cast <int *>(from)[1] = offset;
}
struct A
{
A () : a () {}
A (void *x) : a (x) {}
void *bar () { return a; }
void *a;
};
struct C;
struct D;
struct E : public A
{
C m1 (int);
D m2 ();
E () {}
E (A x) : A (x) {}
};
struct C : public E
{
C () {}
C (void *x) : E (x) {}
};
struct D : public E
{
D (void *x) : E (x) {}
};
C
E::m1 (int x)
{
return (reinterpret_cast <char *>(bar ()) + x);
}
D
E::m2 ()
{
return reinterpret_cast <char *>(bar ());
}
struct B
{
E a;
unsigned b : 16;
unsigned c : 1;
};
void
baz (B *x)
{
for (unsigned i = 0; i < 64; i++)
{
D d = x[i].a.m2 ();
C c = x[i].a.m1 (x[i].c);
foo (d.bar (), c.bar ());
}
}
ICEs with -g -O2 on x86_64-linux, starting with 172109/172110.
More information about the Gcc-bugs
mailing list