Compilation of the attached code yields an ICE in certain cases. Environment: System: Linux chii 2.6.20 #3 SMP Sun Feb 11 23:52:47 EET 2007 x86_64 GNU/Linux Architecture: x86_64
host: x86_64-pc-linux-gnu build: x86_64-pc-linux-gnu target: x86_64-pc-linux-gnu configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release x86_64-linux-gnu How-To-Repeat: Compile this code: typedef double ss2 __attribute__((vector_size(2*sizeof(double)))); ss2 b = {1,1}; extern ss2 a2(ss2 a,ss2 b); void test2() { b = a2(b,b); } With these commandline options: gcc-4.1 -mno-sse2 -S -o- test3.c The output comes as follows: .file "test3.c" .globl b .data .align 16 .type b, @object .size b, 16 b: .long 0 .long 1072693248 .long 0 .long 1072693248 test3.c: In function 'test2': test3.c:6: internal compiler error: in emit_move_insn, at expr.c:3162 Please submit a full bug report, with preprocessed source if appropriate. (rest of output omitted for brevity) It does not occur if "double" is changed to "float", "long double", "short", "int" or "char". It does occur if "double", "long int" or "long long int" is used. It does not occur if 2 is changed to 4. Architecture: CPU=AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ CPU features=fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni lahf_lm cmp_legacy GCC is: Target: x86_64-linux-gnu Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release x86_64-linux-gnu Thread model: posix gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) -- Summary: ICE with vector code when -mno-sse2 on amd64 Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bisqwit at bisqwit dot iki dot fi GCC build triplet: x86_64-pc-linux-gnu GCC host triplet: x86_64-pc-linux-gnu GCC target triplet: x86_64-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31486