https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80709

            Bug ID: 80709
           Summary: ICE in
                    setup_preferred_alternate_classes_for_new_pseudos, at
                    ira.c:2772
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
  Target Milestone: ---
              Host: x86_64-linux-gnu
            Target: arm-linux-gnueabihf

Using cross-compiler I see:

$ cat ~/Programming/testcases/arm.ii
typedef int a __attribute__ ((vector_size (16)));
constexpr a b[]{};
a c;
a d[]{};
void
abort ()
{
  int f = 0;
  for (;; ++f)
    {
      a e = __builtin_shuffle (b[f], c, d[f]);
      if (__builtin_memcmp (&e, &f, sizeof (a)))
        abort ();
    }
}

$ ./xgcc -B. ~/Programming/testcases/arm.ii -O2
/home/marxin/Programming/testcases/arm.ii: In function ‘void abort()’:
/home/marxin/Programming/testcases/arm.ii:12:28: warning: ‘int
__builtin_memcmp_eq(const void*, const void*, unsigned int)’ reading 16 bytes
from a region of size 4 [-Wstringop-overflow=]
       if (__builtin_memcmp (&e, &f, sizeof (a)))
           ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/home/marxin/Programming/testcases/arm.ii:15:1: internal compiler error: in
setup_preferred_alternate_classes_for_new_pseudos, at ira.c:2772
 }
 ^
0xee88e1 setup_preferred_alternate_classes_for_new_pseudos
        ../../gcc/ira.c:2772
0xee89d8 expand_reg_info
        ../../gcc/ira.c:2799
0xeef7a1 ira
        ../../gcc/ira.c:5333
0xeefed6 execute
        ../../gcc/ira.c:5613

Reply via email to