https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90024
Bug ID: 90024 Summary: [7/8/9 Regression] ICE on AArch32 NEON mov with TImode constant. Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, patch Severity: normal Priority: P3 Component: target Assignee: matmal01 at gcc dot gnu.org Reporter: matmal01 at gcc dot gnu.org Target Milestone: --- Created attachment 46111 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46111&action=edit Proposed fix The below code causes an ICE for AArch32 targets with NEON at all optimisation levels except -O0. union a { char b; long long c; }; union a d; int g(int, union a, union a); void e() { union a f[2] = {-1L}; g(0, d, f[0]); } With the backtrace below. $ arm-none-eabi-gcc -march=armv8-a -c test.c -O1 -mfloat-abi=hard -mfpu=neon-fp-armv8 during RTL pass: final test.c: In function 'e': test.c:10:1: internal compiler error: in output_950, at config/arm/neon.md:89 10 | } | ^ 0x1352bfb output_950 /tmp/dgboter/bbs/rhev-vm4--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/build/src/gcc/gcc/config/arm/neon.md:89 0x8aafbd get_insn_template(int, rtx_insn*) /tmp/dgboter/bbs/rhev-vm4--rhe6x86_64/buildbot/rhe6x86_64--arm-none-eabi/build/src/gcc/gcc/final.c:2071 .... <snip> .... I have a patch to fix the problem, creating a bugzilla report for tracking purposes (patch added as attachment, the explanation will be added in comments).