https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113623
--- Comment #3 from Alex Coplan <acoplan at gcc dot gnu.org> --- I think ldp_fusion is exposing a latent issue here. We trip the assert: gcc_assert (aarch64_mem_pair_lanes_operand (mem, pair_mode)); on the RTL: (rr) pr mem (mem/f:V2x8QI (reg:DI 63 v31) [0 +0 S16 A64]) because v31 isn't a valid base register according to aarch64_regno_ok_for_base_p. This comes from the following RTL in sched1, where we already have: 30: x0:DI=[v31:DI] 29: x1:DI=[v31:DI+0x8] but again these mems look invalid as per aarch64_regno_ok_for_base_p.