http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58069
Bug ID: 58069 Summary: ICE in tree_ssa_unswitch_loops at -O3 in 32 bit mode Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: su at cs dot ucdavis.edu The following code causes an ICE when compiled with the current gcc trunk at -O3 on x86_64-linux in 32-bit mode only. This is a regression from 4.8.x. It may be related to 58018, which also manifests in 64-bit mode though. This testcase is also a lot more complex than the one for 58018; I wasn't able to reduce it further. $ gcc-trunk -v gcc version 4.9.0 20130801 (experimental) [trunk revision 201397] (GCC) $ gcc-trunk -m64 -O3 reduced.c /tmp/ccHrLaas.o: In function `main': reduced.c:(.text.startup+0x7): undefined reference to `fn2' reduced.c:(.text.startup+0x18): undefined reference to `fn3' reduced.c:(.text.startup+0x54): undefined reference to `fn7' reduced.c:(.text.startup+0x76): undefined reference to `fn4' reduced.c:(.text.startup+0x87): undefined reference to `fn6' reduced.c:(.text.startup+0x96): undefined reference to `fn5' collect2: error: ld returned 1 exit status $ gcc-trunk -m32 -O2 reduced.c /tmp/cc6hsIbp.o: In function `main': reduced.c:(.text.startup+0x55): undefined reference to `fn2' reduced.c:(.text.startup+0x72): undefined reference to `fn4' reduced.c:(.text.startup+0xfe): undefined reference to `fn7' reduced.c:(.text.startup+0x117): undefined reference to `fn3' reduced.c:(.text.startup+0x127): undefined reference to `fn6' reduced.c:(.text.startup+0x137): undefined reference to `fn5' collect2: error: ld returned 1 exit status $ gcc-4.8 -m32 -O3 reduced.c /tmp/ccCehBNw.o: In function `main': reduced.c:(.text.startup+0xa): undefined reference to `fn2' reduced.c:(.text.startup+0x18): undefined reference to `fn3' reduced.c:(.text.startup+0x52): undefined reference to `fn7' reduced.c:(.text.startup+0x6f): undefined reference to `fn4' reduced.c:(.text.startup+0x7e): undefined reference to `fn6' reduced.c:(.text.startup+0x8e): undefined reference to `fn5' collect2: error: ld returned 1 exit status $ gcc-trunk -m32 -O3 reduced.c reduced.c: In function ‘main’: reduced.c:43:5: internal compiler error: Segmentation fault int main () ^ 0x7d52ef crash_signal ../../gcc-trunk/gcc/toplev.c:334 0x7fd37b ssa_default_def(function*, tree_node*) ../../gcc-trunk/gcc/tree-dfa.c:314 0x7fd640 get_or_create_ssa_default_def(function*, tree_node*) ../../gcc-trunk/gcc/tree-dfa.c:362 0x8168ea get_reaching_def ../../gcc-trunk/gcc/tree-into-ssa.c:1184 0x81ca5a maybe_replace_use ../../gcc-trunk/gcc/tree-into-ssa.c:1784 0x81ca5a rewrite_update_stmt ../../gcc-trunk/gcc/tree-into-ssa.c:1967 0x81ca5a rewrite_update_enter_block ../../gcc-trunk/gcc/tree-into-ssa.c:2136 0xb3716a walk_dominator_tree(dom_walk_data*, basic_block_def*) ../../gcc-trunk/gcc/domwalk.c:210 0x8155f3 rewrite_blocks ../../gcc-trunk/gcc/tree-into-ssa.c:2216 0x81bd0e update_ssa(unsigned int) ../../gcc-trunk/gcc/tree-into-ssa.c:3303 0xb9e4da tree_unswitch_single_loop ../../gcc-trunk/gcc/tree-ssa-loop-unswitch.c:358 0xb9eac8 tree_ssa_unswitch_loops() ../../gcc-trunk/gcc/tree-ssa-loop-unswitch.c:116 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, b, c, e, p; static int *d = &c; static int foo (int p) { int f, i, j = 0, *g = &a; int h[] = { 0, 0, 0, 1, 0, 0, 0, 0, 1 }; for (i = 0; i < 1; i++) { int *k = &b; { int **l = 0; int ***m = &l; int ****n = &m; j || fn2 (); *n = 0; if (*g) fn3 (); else { *k = 0; fn4 (); } } *g = *k; for (j = 8; j >= 0; j--) { for (f = 3; f <= 8; f++) *d |= h[f] && *k; if (e) { fn5 (fn6 () && 1); return 0; } int *o = &h[7]; *d = -1L <= ((*o ^= *k) && f); } fn7 (p <= (a & 5UL)); } } int main () { p = foo (1); return 0; }