On Tue, Jan 19, 2021 at 2:13 PM Ilya Leoshkevich <i...@linux.ibm.com> wrote:
>
> On Tue, 2021-01-19 at 09:41 +0100, Richard Biener wrote:
> > On Mon, Jan 18, 2021 at 11:04 PM Ilya Leoshkevich via Gcc-patches
> > <gcc-patches@gcc.gnu.org> wrote:
> > >
> > Suppose we have:
> > >
> > >     (set (reg/v:TF 63) (mem/c:TF (reg/v:DI 62)))
> > >     (set (reg:FPRX2 66) (subreg:FPRX2 (reg/v:TF 63) 0))
> > >
> > > It is clearly profitable to propagate the first insn into the
> > > second
> > > one and get:
> > >
> > >     (set (reg:FPRX2 66) (mem/c:FPRX2 (reg/v:DI 62)))
> > >
> > > fwprop actually manages to perform this, but doesn't think the
> > > result is
> > > worth it, which results in unnecessary store/load sequences on
> > > s390.
> > > Improve the situation by classifying SUBREG -> MEM changes as
> > > profitable.
> >
> > IIRC fwprop also propagates into multiple uses and replacing a non-
> > MEM
> > with a MEM is only good when the original MEM goes away - is that
> > properly
> > dealt with here?
>
> This is because of efficiency and not correctness reasons, right?

Yes.

>  For
> c
> orrectness I already check MEM_VOLATILE_P (new_rtx).
>  For efficiency I
> t
> hink it would be reasonable to add def_insn->num_uses () == 1 check
> (thi
> s passes my tests, I'm yet to do a full regtest though).  What do
> you
> think about this?

I'm not too familiar with fwprop so will leave that to the actual reviewer.

Richard.

Reply via email to