There is an internal error in gcc when following code is compiled with -O2 -c options. ========================= typedef float floatvect2 __attribute__((mode(V2DF)));
typedef union { floatvect2 vector; double f[2]; }resfloatvect2; void tempf(double *x, double *y) { floatvect2 temp={x[0],x[1]}; floatvect2 temp1={y[0],y[1]}; resfloatvect2 temp2; temp2.vector=temp+temp1; x[0]=temp2.f[0]; } ================== test.c: In function `tempf': test.c:16: internal compiler error: in change_address_1, at emit-rtl.c:1886 Please submit a full bug report, with preprocessed source if appropriate. I could reproduce this error on 3.3.1, 3.4.3, 3.4.4 It is working on gcc build from trunk. Moreover if I compile the compiler with --with-fpu=vfp the testcase works for 3.4.x There has been a similar fix done in bug #11183. -- Summary: [3.3/3.4 regression] [arm] ICE in change_address_1, at emit-rtl.c:1886 Product: gcc Version: 3.4.4 Status: UNCONFIRMED Severity: normal Priority: P2 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: raj dot khem at gmail dot com CC: gcc-bugs at gcc dot gnu dot org,rearnsha at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: arm-unknown-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23772