On Wed, Apr 14, 2021 at 09:25:46PM +0200, Jakub Jelinek wrote:
> 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;

Ah, I see.  That could/should be improved then.  But, GCC 12 :-)


Segher

Reply via email to