Running the GCC testsuite I see the following ICE: Executing on host: /abuild/aj/gcc/gcc/xgcc -B/abuild/aj/gcc/gcc/ /aj-cvs/gcc-svn/branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/vmx/3c-01a.c -O1 -malt ivec -mabi=altivec -std=gnu99 -fno-show-column -S -m64 -o 3c-01a.s (timeout = 300) /aj-cvs/gcc-svn/branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/vmx/3c-01a.c: In function 'f': /aj-cvs/gcc-svn/branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/vmx/3c-01a.c:1450: internal compiler error: RTL check: expected code 'set' or 'clobber', h ave 'unspec' in try_combine, at combine.c:2898 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. compiler exited with status 1 output is: /aj-cvs/gcc-svn/branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/vmx/3c-01a.c: In function 'f': /aj-cvs/gcc-svn/branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/vmx/3c-01a.c:1450: internal compiler error: RTL check: expected code 'set' or 'clobber', h ave 'unspec' in try_combine, at combine.c:2898 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. FAIL: gcc.dg/vmx/3c-01a.c -O1 (test for excess errors) This is with: /opt/gcc/4.1-devel/bin/gcc -v Using built-in specs. Target: powerpc64-suse-linux-gnu Configured with: /aj-cvs/gcc-svn/branches/gcc-4_1-branch/configure --prefix=/opt/gcc/4.1-devel --enable-checking=misc,tree,gc,rtl,rtlflag,assert --enable-threads=posix --enable-clocale=gnu --enable-__cxa_atexit --enable-shared --enable-languages=c,c++,treelang,java,f95,objc --with-system-zlib --with-cpu=default32 powerpc64-suse-linux-gnu Thread model: posix gcc version 4.1.0 20051119 (prerelease)
The bug in combine.c has been there since 1.1 of the file but I don't know if this is a latent bug which was just exposed or not.
Subject: Bug 24952 Author: sayle Date: Fri Feb 24 19:29:34 2006 New Revision: 111425 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=111425 Log: PR middle-end/24952 * combine.c (try_combine): Explicitly check whether GET_CODE is a SET or a CLOBBER, instead on checking that it isn't a USE. Modified: trunk/gcc/ChangeLog trunk/gcc/combine.c
This has now been fixed on mainline.
Subject: Bug 24952 Author: bergner Date: Thu Aug 2 13:42:06 2007 New Revision: 127160 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127160 Log: Backport from mainline. 2006-02-24 Roger Sayle <roger@eyesopen.com> PR middle-end/24952 * combine.c (try_combine): Explicitly check whether GET_CODE is a SET or a CLOBBER, instead on checking that it isn't a USE. 2006-11-22 Peter Bergner <bergner@vnet.ibm.com> * config/rs6000/rs6000.c (get_store_dest): New. (adjacent_mem_locations): Use get_store_dest() to get the rtl of the store destination. Modified: branches/ibm/gcc-4_1-branch/gcc/ChangeLog branches/ibm/gcc-4_1-branch/gcc/combine.c branches/ibm/gcc-4_1-branch/gcc/config/rs6000/rs6000.c