On Mon, Feb 21, 2022 at 06:01:00PM +0100, Uros Bizjak wrote:
> I remember the same issue in the past, so it looks like the fresh
> pseudo as destination gives RA some more freedom to do its magic. So,
> it is better to do:
> 
>       emit_move_insn (dest, gen_lowpart (wmode, t3));
> 
> then play with subregs on a destination, like:
> 
>       dest = lowpart_subreg (vmode, dest, mode);

That is what I assumed too, but unfortunately on the pr89984-2.c
testcase that extra freedom resulted in worse code.
The inlined patch gave it that freedom, the attached patch does not
(unless dest is already SUBREG).
I think it might be useful to open a PR for GCC 13 and change the
attached patch to the inlined one once we can deal with it in the RA.

        Jakub

Reply via email to