+2019-09-03 Kamlesh Kumar <kamleshbhalui@gmail.com>
+
+ PR tree-optimization/91504
+ * match.pd: Add ((~a & b) ^a) --> (a | b).
+
2019-09-03 Jakub Jelinek <jakub@redhat.com>
PR target/91604
(bit_xor:c (bit_and:cs @0 (bit_not @1)) (bit_not @0))
(bit_not (bit_and @0 @1)))
+/* (~a & b) ^ a --> (a | b) */
+(simplify
+ (bit_xor:c (bit_and:cs (bit_not @0) @1) @0)
+ (bit_ior @0 @1))
+
/* (a | b) & ~(a ^ b) --> a & b */
(simplify
(bit_and:c (bit_ior @0 @1) (bit_not (bit_xor:c @0 @1)))
+2019-09-03 Kamlesh Kumar <kamleshbhalui@gmail.com>
+
+ PR tree-optimization/91504
+ gcc.dg/tree-ssa/pr91504.c: New test.
+
2019-09-03 Jakub Jelinek <jakub@redhat.com>
PR target/91604
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O -fdump-tree-optimized-raw" } */
+
+static inline unsigned deposit32(unsigned value, int start, int length,
+ unsigned fieldval)
+{
+ unsigned mask = (~0U >> (32 - length)) << start;
+ return (value & ~mask) | ((fieldval << start) & mask);
+}
+
+unsigned foo(unsigned value)
+{
+ return deposit32(value, 10, 1, 1);
+}
+
+/* { dg-final { scan-tree-dump-not "bit_and_expr" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "bit_xor_expr" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "bit_not_expr" "optimized" } } */