aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Rozenfeld <Eugene.Rozenfeld@microsoft.com>2020-11-30 09:48:58 -0700
committerJeff Law <law@redhat.com>2020-11-30 09:48:58 -0700
commit28a7fdd81e857057f18f87a3c9dd180ad99b77f6 (patch)
treebc2befc4e760c4c7eb8e5292540b3e1d66a98dd7
parent167ab4b1534a0c9d3c3e8376462822ae47e6d10d (diff)
downloadgcc-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.
-rw-r--r--gcc/match.pd5
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)