extern int baz (int); int bar (void *); void foo (void *w, char *x, bool y, bool z) { char c = bar (w); int i = 0;
while (1) { x[i++] = c; c = bar (w); if (y && c == '\'') break; if (z && c == '\"') break; if (!y && !z && !baz (c)) break; } x[i]=0; } causes ICE in compare_and_jump_seq on powerpc-linux, with both -O3 -m32 and -O3 -m64. -- Summary: ICE in compare_and_jump_seq, at loop-unswitch.c:120 Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: rtl-optimization 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=21330