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