On 7/7/2022 7:59 AM, Sam Feifer via Gcc-patches wrote:
Hi!

This patch is meant to solve a missed optimization in match.pd. It optimizes the following 
expression: n - (((n > 63) ? n : 63) & -64) where the constant being negated (in this case 
-64) is a power of 2 and the sum of the two constants is -1. For the signed case, this gets 
optimized to (n <= 63) ? n : (n & 63). For the unsigned case, it gets optimized to (n 
& 63). In both scenarios, the number of instructions produced decreases.

There are also tests for this optimization making sure the optimization happens 
when it is supposed to, and does not happen when it isn't.

Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?

        PR tree-optimization/98304

gcc/ChangeLog:

        * match.pd (n - (((n > C1) ? n : C1) & -C2)): New simplification.

gcc/testsuite/ChangeLog:

        * gcc.c-torture/execute/pr98304-2.c: New test.
        * gcc.dg/pr98304-1.c: New test.
OK.   I'm going to assume Red Hat's assignment covers you and/or you want to contribute under the DCO.    Going forward, if you're part of the tools team for Red Hat and expect to be contributing regularly, you'll probably want to get authenticated write access so that you can commit  approved changes (anyone on the team should be able to help with that).

I'll go ahead and push this one to the trunk.

Thanks,
Jeff

Reply via email to