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.

Reply via email to