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.

Reply via email to