]> gcc.gnu.org Git - gcc.git/commit
Add match patterns for `a ? onezero : onezero` where one of the two operands are...
authorAndrew Pinski <apinski@marvell.com>
Wed, 24 May 2023 07:08:45 +0000 (07:08 +0000)
committerAndrew Pinski <apinski@marvell.com>
Wed, 7 Jun 2023 02:43:16 +0000 (19:43 -0700)
commit64d90d06d2db43538c8a45adbb3d74842f7868ae
treea393236564b78defbe2e07aacb72b6ffbb0e34ad
parentc5c4fa2f9a448d529be746119ebca4fc5e5701b2
Add match patterns for `a ? onezero : onezero` where one of the two operands are constant

This adds a match pattern that are for boolean values
that optimizes `a ? onezero : 0` to `a & onezero` and
`a ? 1 : onezero` to `a | onezero`.

This was reported a few times and I thought I would finally
add the match pattern for this.

This hits a few times in GCC itself too.

Notes on the testcases:
* phi-opt-2.c: This now is optimized to `a & b` in phiopt rather than ifcombine
* phi-opt-25b.c: The test part that was failing was parity which now gets `x & y` treatment.
* ssa-thread-21.c: there is no longer a threading opportunity, so need to disable phiopt.
  Note PR 109957 is filed for the now missing optimization in that testcase too.

gcc/ChangeLog:

PR tree-optimization/89263
PR tree-optimization/99069
PR tree-optimization/20083
PR tree-optimization/94898
* match.pd: Add patterns to optimize `a ? onezero : onezero` with
one of the operands are constant.

gcc/testsuite/ChangeLog:

* gcc.dg/tree-ssa/phi-opt-2.c: Adjust the testcase.
* gcc.dg/tree-ssa/phi-opt-25b.c: Adjust the testcase.
* gcc.dg/tree-ssa/ssa-thread-21.c: Disable phiopt.
* gcc.dg/tree-ssa/phi-opt-27.c: New test.
* gcc.dg/tree-ssa/phi-opt-28.c: New test.
* gcc.dg/tree-ssa/phi-opt-29.c: New test.
* gcc.dg/tree-ssa/phi-opt-30.c: New test.
* gcc.dg/tree-ssa/phi-opt-31.c: New test.
* gcc.dg/tree-ssa/phi-opt-32.c: New test.
gcc/match.pd
gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c
gcc/testsuite/gcc.dg/tree-ssa/phi-opt-25b.c
gcc/testsuite/gcc.dg/tree-ssa/phi-opt-27.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/phi-opt-28.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/phi-opt-29.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/phi-opt-30.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/phi-opt-31.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/phi-opt-32.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-21.c
This page took 0.124473 seconds and 6 git commands to generate.