]> gcc.gnu.org Git - gcc.git/commit
match.pd: Improve y == MIN || x < y optimization [PR105983]
authorJakub Jelinek <jakub@redhat.com>
Thu, 16 Jun 2022 12:37:06 +0000 (14:37 +0200)
committerJakub Jelinek <jakub@redhat.com>
Thu, 16 Jun 2022 12:37:36 +0000 (14:37 +0200)
commit9642d07c35f14b9917cd115e8a9f0210fbcdcf4f
treeb6044081dc305a37c466d1858594ca8479dcb46b
parent74e6a40335765077e235269f19d2d9905d0d9e44
match.pd: Improve y == MIN || x < y optimization [PR105983]

On the following testcase, we only optimize bar where this optimization
is performed at GENERIC folding time, but on GIMPLE it doesn't trigger
anymore, as we actually don't see
  (bit_and (ne @1 min_value) (ge @0 @1))
but
  (bit_and (ne @1 min_value) (le @1 @0))
genmatch handles :c modifier not just on commutative operations, but
also comparisons and in that case it means it swaps the comparison.

2022-06-16  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/105983
* match.pd (y == XXX_MIN || x < y -> x <= y - 1,
y != XXX_MIN && x >= y -> x > y - 1): Use :cs instead of :s
on non-equality comparisons.

* gcc.dg/tree-ssa/pr105983.c: New test.
gcc/match.pd
gcc/testsuite/gcc.dg/tree-ssa/pr105983.c [new file with mode: 0644]
This page took 0.072255 seconds and 5 git commands to generate.