http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51069
Bug #: 51069 Summary: ICE in verify_loop_structure, at cfgloop.c:1559 Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassig...@gcc.gnu.org ReportedBy: reg...@cs.utah.edu CC: cheny...@cs.utah.edu [regehr@gamow tmp056]$ current-gcc -v Using built-in specs. COLLECT_GCC=current-gcc COLLECT_LTO_WRAPPER=/uusoc/exports/scratch/regehr/z/compiler-install/gcc-r181229-install/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../configure --with-libelf=/usr/local --enable-lto --prefix=/home/regehr/z/compiler-install/gcc-r181229-install --program-prefix=r181229- --enable-languages=c,c++ Thread model: posix gcc version 4.7.0 20111109 (experimental) (GCC) [regehr@gamow tmp056]$ current-gcc -Ofast -funroll-loops -c -w small.c small.c: In function 'func_44': small.c:73:1: error: edge from 10 to 12 should be marked irreducible small.c:73:1: error: basic block 12 should be marked irreducible small.c:73:1: internal compiler error: in verify_loop_structure, at cfgloop.c:1559 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. [regehr@gamow tmp056]$ cat small.c int func_27 (int left, int right) { return left; } int func_29 (int left, int right) { return left; } struct S0 { int f0; int f3; }; struct S1 { struct S0 f4; int f8; }; struct S0 g_107; int g_132; struct S0 g_147; int g_154; struct S1 g_288; struct S1 g_399; int func_52 (int, struct S0); int func_55 (); int func_44 (int p_46, int p_47) { struct S0 l_170; int l_356[] = { 0 }; lbl_598:if (p_46) { } else { lbl_485:func_52 (0, l_170); if (func_29 (func_27 (g_399.f8, 0), 0)) for (g_107.f0 = 0; g_107.f0 >= 0; g_107.f0 -= 1) { for (;;) if (l_356[1]) break; if (g_288.f4.f3) goto lbl_485; if (g_399.f8) { g_132 = 0; continue; } for (; g_154; g_154 = 0) { } } } if (func_55 ()) { } else for (g_147.f0 = 0;;) { if (p_46) continue; goto lbl_598; } return 0; }