I find no description for "triplet", so guessing at its use, and see no method of attaching .ii so attempting to fit all info in this form.
Problem seems to be from reinterpret_cast between vectors and unions of vectors with arrays of scalars. Occurred in machine-generated code, have not been able to substantially simplify. Error persists with -march=pentium4 -msse2 switches so is independent of whether vectors are generated or just simulated as array. Identical error message occurs in gcc built from 4.1.1 sources on a PowerPC G4. Error does not occur if I change to C-style casts and change extension to .c. Unfortunately, semantics of C++ casting seem to change the C-style cast in error.cpp to a static_cast, which then encounters a semantic error: error2.cpp:144: error: no matching function for call to __v4F::__v4F(float __vector__&) error2.cpp:17: note: candidates are: __v4F::__v4F() error2.cpp:17: note: __v4F::__v4F(const __v4F&) Thus the attempt to generate a reinterpret_cast leading to discovery of bug. gcc -v Using built-in specs. Target: i386-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux Thread model: posix gcc version 4.1.1 20060525 (Red Hat 4.1.1-1) gcc -O3 -o error.o error.cpp error.cpp: In function void work_Fused_Pre_iDC_Pos_iDC_158__2(int): error.cpp:245: internal compiler error: in convert_move, at expr.c:362 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://bugzilla.redhat.com/bugzilla> for instructions. Preprocessed source stored into /tmp/ccqrXNUl.out file, please attach this to your bugreport. // /usr/libexec/gcc/i386-redhat-linux/4.1.1/cc1plus -quiet -D_GNU_SOURCE error.cpp -quiet -dumpbase error.cpp -mtune=generic -auxbase error -O3 -o - -frandom-seed=0 # 1 "error.cpp" # 1 "<built-in>" # 1 "<command line>" # 1 "error.cpp" volatile int __print_sink__; # 16 "error.cpp" typedef float __v_4F __attribute__ ((vector_size (16))); typedef union {__v_4F v; float a[4];} __v4F; int __max_iteration; int BUFFER_0_1[1023 + 1]; int HEAD_0_1 = 0; int TAIL_0_1 = 0; float BUFFER_1_2[1023 + 1]; int HEAD_1_2 = 0; int TAIL_1_2 = 0; float BUFFER_2_3[1023 + 1]; int HEAD_2_3 = 0; int TAIL_2_3 = 0; void init_AnonFilter_a0__261_44__1(); void work_AnonFilter_a0__261_44__1(int); void init_Fused_Pre_iDC_Pos_iDC_158__2(); void work_Fused_Pre_iDC_Pos_iDC_158__2(int); void FileWriter__301_78__work__4(int); int main(int argc, char **argv) { int a; int n; # 48 "error.cpp" init_Fused_Pre_iDC_Pos_iDC_158__2(); for (n = 0; n < (__max_iteration ); n++) { HEAD_1_2 = 0; TAIL_1_2 = 0; work_AnonFilter_a0__261_44__1(1024 ); HEAD_2_3 = 0; TAIL_2_3 = 0; work_Fused_Pre_iDC_Pos_iDC_158__2(1 ); FileWriter__301_78__work__4(1024 ); } return 0; } inline void __push__0(int data) { BUFFER_0_1[HEAD_0_1]=data; HEAD_0_1++; } inline void __push__1(float data) { BUFFER_1_2[HEAD_1_2]=data; HEAD_1_2++; } float v = 0.0f; void work_AnonFilter_a0__261_44__1(int ____n){ for ( ; (0 < ____n); (____n--)) {{ __push__1(v++); } } } __v_4F coeff__268__309__2[16][16]; __v_4F coeff__285__329__2[16][16]; inline float __pop__2n(int n) { float res=BUFFER_1_2[TAIL_1_2]; TAIL_1_2+=n; return res; } inline float __peek__2(int offs) { return BUFFER_1_2[TAIL_1_2+offs]; } inline void __push__2(float data) { BUFFER_2_3[HEAD_2_3]=data; HEAD_2_3++; } void init_Fused_Pre_iDC_Pos_iDC_158__2(){ float Cu__275__318 = 0.0f; int u__276__319 = 0; int x__277__320 = 0; float __tmp92 = 0.0f; (x__277__320 = 0) ; while ((x__277__320 < 16)) { (u__276__319 = 0) ; while ((u__276__319 < 16)) { (Cu__275__318 = ((float)1.0)) ; if ((u__276__319 == 0)) {(Cu__275__318 = ((float)0.70710677)) ; } else {} (__tmp92 = ((((float)0.5) * Cu__275__318) * ((float)( (((double)((((((float)(u__276__319)) * ((float)3.1415927)) * ((((float)2.0) * ((float)(x__277__320))) + ((float)1.0))) / ((float)32.0))))))))) ; (((reinterpret_cast<__v4F>(((coeff__268__309__2)[(int)x__277__320])[(int)u__276__319]).a)[(int)0]) = __tmp92); (((reinterpret_cast<__v4F>(((coeff__268__309__2)[(int)x__277__320])[(int)u__276__319]).a)[(int)1]) = __tmp92); (((reinterpret_cast<__v4F>(((coeff__268__309__2)[(int)x__277__320])[(int)u__276__319]).a)[(int)2]) = __tmp92); (((reinterpret_cast<__v4F>(((coeff__268__309__2)[(int)x__277__320])[(int)u__276__319]).a)[(int)3]) = __tmp92); (u__276__319++); } (x__277__320++); } float Cu__292__338 = 0.0f; int u__293__339 = 0; int x__294__340 = 0; float __tmp93 = 0.0f; (x__294__340 = 0) ; while ((x__294__340 < 16)) { (u__293__339 = 0) ; while ((u__293__339 < 16)) { (Cu__292__338 = ((float)1.0)) ; if ((u__293__339 == 0)) {(Cu__292__338 = ((float)0.70710677)) ; } else {} (__tmp93 = ((((float)0.5) * Cu__292__338) * ((float)( (((double)((((((float)(u__293__339)) * ((float)3.1415927)) * ((((float)2.0) * ((float)(x__294__340))) + ((float)1.0))) / ((float)32.0))))))))) ; (((reinterpret_cast<__v4F>(((coeff__285__329__2)[(int)x__294__340])[(int)u__293__339]).a)[(int)0]) = __tmp93); (((reinterpret_cast<__v4F>(((coeff__285__329__2)[(int)x__294__340])[(int)u__293__339]).a)[(int)1]) = __tmp93); (((reinterpret_cast<__v4F>(((coeff__285__329__2)[(int)x__294__340])[(int)u__293__339]).a)[(int)2]) = __tmp93); (((reinterpret_cast<__v4F>(((coeff__285__329__2)[(int)x__294__340])[(int)u__293__339]).a)[(int)3]) = __tmp93); (u__293__339++); } (x__294__340++); } } float __POKEBUFFER____2[768] = {0}; int __POKEBUFFERHEAD____2 = 0; void work_Fused_Pre_iDC_Pos_iDC_158__2(int ____n){ for ( ; (0 < ____n); (____n--)) {{ static const __v_4F __tmp94 = {((float)0.0), ((float)0.0), ((float)0.0), ((float)0.0)}; __v_4F ___POP_BUFFER_1_1[256]; int ___POP_INDEX_1_1 = 0; int ___PUSH_INDEX_1_1 = 0; int ___COUNTER_WORK_1_1 = 0; __v_4F ___POP_BUFFER_2_1[256]; int ___PUSH_INDEX_1_2 = 0; __v_4F ___POP_BUFFER_3_1[256]; int ___POP_INDEX_1_3 = 0; int ___PUSH_INDEX_1_3 = 0; int ___COUNTER_WORK_1_3 = 0; int _k__264__304 = 0; int iTimesSumOfWeights_Plus_PartialSum_k__265__305 = 0; int _i__266__306 = 0; __v_4F __tmp74__307; __v_4F tempsum__271__312; int u__272__313 = 0; int x__273__314 = 0; __v_4F __tmp76__315; __v_4F __tmp77__316; __v_4F __tmp78__317; int _k__281__324 = 0; int partialSum_i__282__325 = 0; int _i__283__326 = 0; __v_4F __tmp80__327; __v_4F tempsum__288__332; int u__289__333 = 0; int x__290__334 = 0; __v_4F __tmp82__335; __v_4F __tmp83__336; __v_4F __tmp84__337; int streamItVar81 = 0; ((__POKEBUFFERHEAD____2) = 0) ; (___POP_INDEX_1_1 = -1) ; (___PUSH_INDEX_1_1 = -1) ; (___PUSH_INDEX_1_2 = -1) ; (___POP_INDEX_1_3 = -1) ; (___PUSH_INDEX_1_3 = -1) ; for ((_k__264__304 = 0) ; (_k__264__304 < 16); (_k__264__304++)) {{ (iTimesSumOfWeights_Plus_PartialSum_k__265__305 = _k__264__304) ; for ((_i__266__306 = 0) ; (_i__266__306 < 16); (_i__266__306++)) {{ (((reinterpret_cast<__v4F>(__tmp74__307).a)[(int)0]) = __peek__2(((iTimesSumOfWeights_Plus_PartialSum_k__265__305 + 0) + 0))); (((reinterpret_cast<__v4F>(__tmp74__307).a)[(int)1]) = __peek__2(((iTimesSumOfWeights_Plus_PartialSum_k__265__305 + 0) + 256))); (((reinterpret_cast<__v4F>(__tmp74__307).a)[(int)2]) = __peek__2(((iTimesSumOfWeights_Plus_PartialSum_k__265__305 + 0) + 512))); (((reinterpret_cast<__v4F>(__tmp74__307).a)[(int)3]) = __peek__2(((iTimesSumOfWeights_Plus_PartialSum_k__265__305 + 0) + 768))); (((___POP_BUFFER_1_1[(int)(++___PUSH_INDEX_1_1)])) = (__tmp74__307)); (iTimesSumOfWeights_Plus_PartialSum_k__265__305 = (iTimesSumOfWeights_Plus_PartialSum_k__265__305 + 16)) ; } } } } __pop__2n(256); for ((___COUNTER_WORK_1_1 = 0) ; (___COUNTER_WORK_1_1 < 16); (___COUNTER_WORK_1_1++)) {{ (x__273__314 = 0) ; while ((x__273__314 < 16)) { ((tempsum__271__312) = __tmp94); (u__272__313 = 0) ; while ((u__272__313 < 16)) { ((__tmp78__317) = ((___POP_BUFFER_1_1[(int)((1 + ___POP_INDEX_1_1) + u__272__313)]))); ((__tmp77__316) = (((((coeff__268__309__2)[(int)x__273__314])[(int)u__272__313])) * (__tmp78__317))); ((__tmp76__315) = ((tempsum__271__312) + (__tmp77__316))); ((tempsum__271__312) = (__tmp76__315)); (u__272__313++); } (((___POP_BUFFER_2_1[(int)(++___PUSH_INDEX_1_2)])) = (tempsum__271__312)); (x__273__314++); } (___POP_INDEX_1_1 = (___POP_INDEX_1_1 + 16)) ; } } for ((_k__281__324 = 0) ; (_k__281__324 < 16); (_k__281__324++)) {{ (partialSum_i__282__325 = 0) ; for ((_i__283__326 = 0) ; (_i__283__326 < 16); (_i__283__326++)) {{ ((__tmp80__327) = ((___POP_BUFFER_2_1[(int)(0 + (_k__281__324 + (partialSum_i__282__325 + 0)))]))); (((___POP_BUFFER_3_1[(int)(++___PUSH_INDEX_1_3)])) = (__tmp80__327)); (partialSum_i__282__325 = (partialSum_i__282__325 + 16)) ; } } } } for ((___COUNTER_WORK_1_3 = 0) ; (___COUNTER_WORK_1_3 < 16); (___COUNTER_WORK_1_3++)) {{ (x__290__334 = 0) ; while ((x__290__334 < 16)) { ((tempsum__288__332) = __tmp94); (u__289__333 = 0) ; while ((u__289__333 < 16)) { ((__tmp84__337) = ((___POP_BUFFER_3_1[(int)((1 + ___POP_INDEX_1_3) + u__289__333)]))); ((__tmp83__336) = (((((coeff__285__329__2)[(int)x__290__334])[(int)u__289__333])) * (__tmp84__337))); ((__tmp82__335) = ((tempsum__288__332) + (__tmp83__336))); ((tempsum__288__332) = (__tmp82__335)); (u__289__333++); } __push__2(((reinterpret_cast<__v4F>(tempsum__288__332).a)[(int)0])); (((__POKEBUFFER____2)[(int)((__POKEBUFFERHEAD____2) + 0)]) = ((reinterpret_cast<__v4F>(tempsum__288__332).a)[(int)1])); (((__POKEBUFFER____2)[(int)((__POKEBUFFERHEAD____2) + 256)]) = ((reinterpret_cast<__v4F>(tempsum__288__332).a)[(int)2])); (((__POKEBUFFER____2)[(int)((__POKEBUFFERHEAD____2) + 512)]) = ((reinterpret_cast<__v4F>(tempsum__288__332).a)[(int)3])); ((__POKEBUFFERHEAD____2)++); (x__290__334++); } (___POP_INDEX_1_3 = (___POP_INDEX_1_3 + 16)) ; } } ((__POKEBUFFERHEAD____2) = 0) ; for ((streamItVar81 = 0) ; (streamItVar81 < 768); (streamItVar81++)) {{ __push__2(((__POKEBUFFER____2)[(int)(__POKEBUFFERHEAD____2)])); ((__POKEBUFFERHEAD____2)++); } } __pop__2n(768); } } } inline float __pop__3() { float res=BUFFER_2_3[TAIL_2_3]; TAIL_2_3++; return res; } int output_count = 0; void FileWriter__301_78__work__4(int ____n) { __print_sink__ = (int)__pop__3(); } -- Summary: internal compiler error: in convert_move, at expr.c:362 Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dimock at csail dot mit dot edu GCC build triplet: i386-redhat-linux GCC host triplet: i386-redhat-linux GCC target triplet: i386-redhat-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30016