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