http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60733
--- Comment #1 from Zhendong Su <su at cs dot ucdavis.edu> --- Here is a variant that causes an ICE even without LTO. $ gcc-trunk -v Using built-in specs. COLLECT_GCC=gcc-trunk COLLECT_LTO_WRAPPER=/usr/local/gcc-trunk/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc-trunk/configure --prefix=/usr/local/gcc-trunk --enable-languages=c,c++ --disable-werror --enable-multilib Thread model: posix gcc version 4.9.0 20140401 (experimental) [trunk revision 208971] (GCC) $ $ gcc-4.8 -O3 small2.c; a.out $ $ gcc-trunk -O3 small2.c small2.c: In function ‘main’: small2.c:11:1: error: definition in block 12 follows the use main () ^ for SSA_NAME: _64 in statement: slsr_125 = _64 * 65535; small2.c:11:1: internal compiler error: verify_ssa failed 0xb0b64b verify_ssa(bool) ../../gcc-trunk/gcc/tree-ssa.c:1096 0x8ae43c execute_function_todo ../../gcc-trunk/gcc/passes.c:1854 0x8aed93 execute_todo ../../gcc-trunk/gcc/passes.c:1887 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. $ ------------------------------ int a, d, e, f, g, h, i, j, k; unsigned short b; short fn1 (int p1, int p2) { return p1 * p2; } int main () { for (; a; a--) { int l = 0; if (f >= 0) { for (; h;) e = 0; for (; l != -6; l--) { j = fn1 (b--, d); for (g = 0; g; g = 1) ; k = e ? 2 : 0; } i = 0; for (;;) ; } } d = 0; return 0; }