diff options
author | Eugene Rozenfeld <Eugene.Rozenfeld@microsoft.com> | 2020-11-30 09:48:58 -0700 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 2020-11-30 09:48:58 -0700 |
commit | 28a7fdd81e857057f18f87a3c9dd180ad99b77f6 (patch) | |
tree | bc2befc4e760c4c7eb8e5292540b3e1d66a98dd7 /gcc | |
parent | 167ab4b1534a0c9d3c3e8376462822ae47e6d10d (diff) | |
download | gcc-28a7fdd81e857057f18f87a3c9dd180ad99b77f6.zip gcc-28a7fdd81e857057f18f87a3c9dd180ad99b77f6.tar.gz gcc-28a7fdd81e857057f18f87a3c9dd180ad99b77f6.tar.bz2 |
Optimize or+and+or pattern to and+or
gcc/
PR tree-optimization/96679
* match.pd (((b | c) & a) | b -> (a & c) | b): New pattern.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/match.pd | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/match.pd b/gcc/match.pd index 1726c18..6cf16c6 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1460,6 +1460,11 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (bitop:c (rbitop:c (bit_not @0) @1) @0) (bitop @0 @1))) +/* ((x | y) & z) | x -> (z & y) | x */ +(simplify + (bit_ior:c (bit_and:cs (bit_ior:cs @0 @1) @2) @0) + (bit_ior (bit_and @2 @1) @0)) + /* (x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2) */ (simplify (bit_and (bit_ior @0 CONSTANT_CLASS_P@1) CONSTANT_CLASS_P@2) |