Consider: void bar (int);
void foo (void) { unsigned arg; unsigned i; for (i = 1; i < 10; i++) { switch (i) { case 2: case 9: arg = 1; break; default: arg = 0; break; } bar (arg); } } "./cc1 -quiet -O1 -funroll-all-loops" gives stress-dwarf2out.c: In function ‘foo’: stress-dwarf2out.c:5: error: Missing edge 11->5 stress-dwarf2out.c:5: error: Missing edge 16->5 stress-dwarf2out.c:5: error: Missing edge 21->5 stress-dwarf2out.c:5: error: Missing edge 26->5 stress-dwarf2out.c:5: error: Missing edge 31->5 stress-dwarf2out.c:5: error: Missing edge 36->5 stress-dwarf2out.c:5: error: Missing edge 41->5 stress-dwarf2out.c:5: error: Missing edge 46->5 stress-dwarf2out.c:5: internal compiler error: verify_flow_info failed Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. The testcase is reduced from dwarf2out.i. -- Summary: ICE with -funroll-loops Product: gcc Version: unknown Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: critical Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kazu at cs dot umass dot edu CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18478