https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124041
Robin Dapp <rdapp at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rdapp at gcc dot gnu.org
--- Comment #10 from Robin Dapp <rdapp at gcc dot gnu.org> ---
Not that I have any deeper knowledge of aarch64 but is the
"before" RTL legit?
(subreg:SI (reg/f:DI 64 sfp) 0)
hard_regno_mode_ok:
if (regno == FRAME_POINTER_REGNUM || regno == ARG_POINTER_REGNUM)
return mode == Pmode;
lra does
(insn 34 32 36 3 (set (reg:SI 103 [ _7 ])
(subreg:SI (reg/f:DI 119) 0)) "bla.c":7:41 104 {*movsi_aarch64}
Changing pseudo 119 in operand 1 of insn 34 on equiv sfp:DI
->
(insn 34 32 36 3 (set (reg:SI 103 [ _7 ])
(subreg:SI (reg/f:DI 64 sfp) 0)) "bla.c":7:41 104 {*movsi_aarch64}
(nil))
If this equivalence substitution happens in subreg context maybe we need to
check hard_regno_mode_ok before continuing? Just out of curiosity, I'm testing
such a patch.