On Wed, Apr 14, 2021 at 01:47:04PM -0500, Segher Boessenkool wrote:
> > and I must say I don't know if make_more_copies was meant to
> > split insn 2 into (set (reg:QI pseudo) (reg:QI 0 x0)) and
> > (set (reg/v:SI 96) (zero_extend:SI (reg:QI pseudo)))
> > or not.
> 
> It makes
> 
> (set (reg:QI new) (reg:QI x0))
> (set (reg:SI 96) (zero_extend:SI (reg:QI new)))
> 
> The point is it keeps exactly the same form, but no hard regs anymore.

It doesn't, as make_more_copies does:
          rtx dest = SET_DEST (set);
          if (!(REG_P (dest) && !HARD_REGISTER_P (dest)))
              continue;
   
          rtx src = SET_SRC (set);
          if (!(REG_P (src) && HARD_REGISTER_P (src)))
            continue;
but in this case the hard reg is wrapped into the zero_extend already
and so it will continue;

        Jakub

Reply via email to