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