Running the 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/vect/pr22506.c -O2 -ftr ee-vectorize -maltivec -ftree-vectorizer-verbose=4 -fdump-tree-vect-stats -fno-show-column -S -m64 -o pr22506.s (timeout = 300) /aj-cvs/gcc-svn/branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/vect/pr22506.c: In function 'foo': /aj-cvs/gcc-svn/branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/vect/pr22506.c:12: internal compiler error: RTL check: expected code 'const_int', have 'co nst_double' in output_vec_const_move, at config/rs6000/rs6000.c:2204 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/vect/pr22506.c: In function 'foo': /aj-cvs/gcc-svn/branches/gcc-4_1-branch/gcc/testsuite/gcc.dg/vect/pr22506.c:12: internal compiler error: RTL check: expected code 'const_int', have 'co nst_double' in output_vec_const_move, at config/rs6000/rs6000.c:2204 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. FAIL: gcc.dg/vect/pr22506.c (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)
Confirmed, this is a regression. The check for integer type was removed for some reason.
easy_altivec_constant should only be called with AltiVec integer vector modes, all of which can be represented with a const_vector of const_ints. Anyway, looking into it. Paolo
Got a patch, but I am curious about Andrew's comment. I couldn't find a reason why r106588 *introduced* the bug rather than unveiling a latent one.
Subject: Bug 24951 Author: bonzini Date: Mon Nov 21 16:38:13 2005 New Revision: 107312 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107312 Log: 2005-11-21 Paolo Bonzini <bonzini@gnu.org> PR target/24951 * config/rs6000/rs6000.c (output_vec_const_move): Load cst and cst2 only for SPE vectors. Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000.c
Subject: Bug 24951 Author: bonzini Date: Mon Nov 21 17:04:11 2005 New Revision: 107313 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107313 Log: 2005-11-21 Paolo Bonzini <bonzini@gnu.org> PR target/24951 * config/rs6000/rs6000.c (output_vec_const_move): Load cst and cst2 only for SPE vectors. Modified: branches/gcc-4_1-branch/gcc/ChangeLog branches/gcc-4_1-branch/gcc/config/rs6000/rs6000.c
Andreas, can you confirm it is fixed?
I verified that an x86->powerpc64 mainline compiler built with --enable-checking=all compiles the testcase without errors.
Seems to be fixed according to: http://gcc.gnu.org/ml/gcc-testresults/2005-11/msg01060.html Compare this with: http://gcc.gnu.org/ml/gcc-testresults/2005-11/msg01039.html Thanks!