> From: Richard Biener via Gcc-patches <gcc-patches@gcc.gnu.org>
> Date: Thu, 18 Feb 2021 11:12:26 +0100

> On Thu, Feb 18, 2021 at 12:35 AM Hans-Peter Nilsson via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
> >
> > If we're not going to eliminate the clz, it's better for the
> > comparison to use that result than its input, so we don't
> > extend the lifetime of the input.  Also, an additional use
> > of the result is more likely cheaper than a compare of the
> > input, in particular considering that the clz may have made
> > available a non-zero condition matching the original use.
> 
> Of course the non-zero compare can execute concurrently
> with the clz if we use the input which can result in faster
> operation.  It's one of the many cases where local folding
> doesn't tell us enough.  One of the usual issues with
> single_use checks is that the IL is not fully DCEd while
> we fold it and thus dead uses can make sth !single_use
> even though it really is single_use.
> 
> Also if there's a use of the input live at the point of the
> compare we want to replace it's likely better to do the
> transform.

Yeah, all depending on the code context.  I guess these
simple match.pd transformations will grow some conditions.

> > The "s" modifier doesn't stop this situation, as the
> > transformation wouldn't result in "an expression with more
> > than one operator"; a gating single_use condition on the
> > result is necessary.
> 
> Note that :s was done this way for the use in VN where
> we can this way CSE c != 0 with an earlier a >= 0.
> 
> It might be an interesting idea to allow match.pd consumers
> to "switch" behavior of :s according to their needs.

Like, as a heuristic for a non-ooo-target, to mean single_use?
Yes, good idea!

> > Regtested cris-elf and x86_64-linux.
> > Ok to commit?
> 
> OK.

Done as a2ef38b1f94d, thanks for the review.

> gcc/testsuite:
>         PR tree-optimization/99142
>         * testsuite/gcc.dg/tree-ssa/pr99142.c: New test.

JFTR; oops: ^ Spurious "testsuite/" removed.

brgds, H-P

Reply via email to