https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113114
--- Comment #3 from Alex Coplan <acoplan at gcc dot gnu.org> --- The following ICEs in the same way without ILP32 (reduced from a testsuite run with -funroll-loops): $ cat t.c float val[128]; float x; void bar() { int i = 55; for (; i >= 0; --i) x += val[i]; } $ gcc/xgcc -B gcc -c t.c -O -funroll-loops -mearly-ldp-fusion -mlate-ldp-fusion during RTL pass: ldp_fusion t.c: In function ‘bar’: t.c:7:1: internal compiler error: in try_promote_writeback, at config/aarch64/aarch64-ldp-fusion.cc:2675 7 | } | ^ 0x14671b3 try_promote_writeback /home/alecop01/toolchain/src/other_gcc/gcc/config/aarch64/aarch64-ldp-fusion.cc:2675 0x14671b3 ldp_fusion_bb(rtl_ssa::bb_info*) /home/alecop01/toolchain/src/other_gcc/gcc/config/aarch64/aarch64-ldp-fusion.cc:2706 0x1467307 ldp_fusion() /home/alecop01/toolchain/src/other_gcc/gcc/config/aarch64/aarch64-ldp-fusion.cc:2726 0x146737b execute /home/alecop01/toolchain/src/other_gcc/gcc/config/aarch64/aarch64-ldp-fusion.cc:2776 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. I'll investigate. Probably we just shouldn't assert that recog succeeds here, but I'll take a closer look at what's going on.