http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48493
Summary: [ICE] in expand_expr_addr_expr_1, at expr.c
Product: gcc
Version: 4.6.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected], [email protected]
The arm gcc fails in compiling the following reproducible code:
---------------------- CODE ----------------------
typedef long long T __attribute__((may_alias, aligned (1)));
struct S
{
_Complex float d __attribute__((aligned (8)));
};
void bar (struct S);
void
f1 (T x)
{
struct S s;
*(T *) ((char *) &s.d + 1) = x;
bar (s);
}
---------------------- CUT ----------------------
The following error message will be given when the above code is compiled with
options -mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=neon -O1
(-O1 itself should be enough to reproduce the problem):
repro.c: In function 'f1':
repro.c:14:30: internal compiler error: in expand_expr_addr_expr_1, at
expr.c:6922
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
The test is derived from the regression test case gcc.dg/pr48335-2.c which was
added in r171855 (http://gcc.gnu.org/ml/gcc-cvs/2011-04/msg00047.html) on 1st
April. However, the compiler before the commit, and even the 4.6.1 compiler,
fails in the same way. FYI. the commit is a patch for bug 48335, in which the
'arm' target was not tested according to bug 48335, comment #6:
> Created attachment 23818 [details]
> gcc46-pr48335.patch
>
> Updated patch, all the new tests now compile, on
> i386/x86_64/ppc/ppc64/s390/s390x.