Tests gap and twolf from SPEC CPU2000 ICE when built on powerpc64-linux with "-O2 -ftree-loop-linear" and either -m32 or -m64. A third test, lucas, started getting segfaults for those options at the same time. A regression hunt using a minimized testcase (to be attached) identified this patch: http://gcc.gnu.org/viewcvs?view=rev&rev=112437 r112437 | spop | 2006-03-28 04:19:26 +0000 (Tue, 28 Mar 2006) Output compiling the minimized testcase: elm3b145% /opt/gcc-nightly/trunk/bin/gcc -O2 -ftree-loop-linear -c uloop.c uloop.c: In function ‘foo’: uloop.c:3: internal compiler error: vector VEC(ddr_p,base) index domain error, in try_interchange_loops at tree-loop-linear.c:183 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Created attachment 11339 [details] test case
Confirmed. This was caused by the change over from varray to VEC. Looks like we had a bug where we depend on pushing something but now we don't.
Created attachment 11429 [details] fix proposed fix. I didn't tested it other than making sure it fixed the bug.
Subject: Bug 27332 Author: spop Date: Wed May 17 12:47:43 2006 New Revision: 113856 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113856 Log: PR middle-end/27332 * tree-loop-linear.c (try_interchange_loops): Test for no data dependences. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-loop-linear.c
Fixed.