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: unassig...@gcc.gnu.org ReportedBy: yuf...@gcc.gnu.org CC: ja...@gcc.gnu.org, ram...@gcc.gnu.org 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.