match.pd: A ^ ((A ^ B) & -(C cmp D)) -> (C cmp D) ? B : A simplification [PR94786]
authorJakub Jelinek <jakub@redhat.com>
Fri, 8 May 2020 08:52:47 +0000 (10:52 +0200)
committerJakub Jelinek <jakub@redhat.com>
Fri, 8 May 2020 08:52:47 +0000 (10:52 +0200)
commit1595a1cb7bfac8d5a6026d5d6f3a495be0391506
tree701be1abe1fbf79e878cf47ce6728b11606b8483
parenta229f9b3737062c6e853879be6683f3f3e4a6661
match.pd: A ^ ((A ^ B) & -(C cmp D)) -> (C cmp D) ? B : A simplification [PR94786]

We already have x - ((x - y) & -(z < w)) and
x + ((y - x) & -(z < w)) simplifications, this one adds
x ^ ((x ^ y) & -(z < w)) (not merged using for because of the
:c that can be present on bit_xor and can't on minus).

2020-05-08  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/94786
* match.pd (A ^ ((A ^ B) & -(C cmp D)) -> (C cmp D) ? B : A): New
simplification.

* gcc.dg/tree-ssa/pr94786.c: New test.
gcc/ChangeLog
gcc/match.pd
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/pr94786.c [new file with mode: 0644]