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