// { dg-do compile } // { dg-options "-Os -fPIC" } extern char *bar (const char *, const char *); extern char *baz (char *, const char *); extern unsigned int fn (const char *); static const struct C { int i; } k = { 0};
struct S { S (const C &x, unsigned int *y) : a (x), b (y) {} const C &a; unsigned int *b; }; struct A { ~A (); void helper (const S &); }; struct B : private A { B (const S &x) { helper (x); } }; char * foo (char *x, const char *y) { unsigned int a; B b (S (k, &a)); char *c = x; if (bar (y, "foo")) { baz (c, "foo"); c += fn ("foo"); } else if (bar (y, "bar")) { baz (c, "bar"); c += fn ("bar"); } return x; } causes ICE on powerpc-linux (32-bit). -- Summary: ICE in try_crossjump_to_edge Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: powerpc-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21492