re PR tree-optimization/66757 (wrong code at -O1 and above on x86_64-linux-gnu)
authorEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 6 Jul 2015 08:43:58 +0000 (08:43 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 6 Jul 2015 08:43:58 +0000 (08:43 +0000)
PR tree-optimization/66757
* match.pd: Add missing condition to ~X ^ C -> X ^ ~C.

From-SVN: r225446

gcc/ChangeLog
gcc/match.pd
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr66757.c [new file with mode: 0644]

index 0d6337c2a23bc294d20e0557ec817764713a5f72..234468c71a1bb7eff6425240e06078b5fa58bd5e 100644 (file)
@@ -1,3 +1,8 @@
+2015-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR tree-optimization/66757
+       * match.pd: Add missing condition to ~X ^ C -> X ^ ~C.
+
 2015-07-05  Chung-Lin Tang  <cltang@codesourcery.com>
            Sandra Loosemore <sandra@codesourcery.com>
 
index 7d1d4dfbcb1cadfbabf1556484d6c069b11eeb35..ae0d9f11134d0e34c03dbaf8cceb9a7a65839a21 100644 (file)
@@ -444,7 +444,8 @@ along with GCC; see the file COPYING3.  If not see
 /* Convert ~X ^ C to X ^ ~C.  */
 (simplify
  (bit_xor (convert? (bit_not @0)) INTEGER_CST@1)
- (bit_xor (convert @0) (bit_not @1)))
+ (if (tree_nop_conversion_p (type, TREE_TYPE (@0)))
+  (bit_xor (convert @0) (bit_not @1))))
 
 /* Fold (X & Y) ^ Y as ~X & Y.  */
 (simplify
index e1f30e4d693135bc28ba349d09ec59d2d11a5568..da05a9468c2533d47b89119c4b0634ba2545b0fe 100644 (file)
@@ -1,8 +1,11 @@
+2015-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc.c-torture/execute/pr66757.c: New test.
+
 2015-07-06  Bin Cheng  <bin.cheng@arm.com>
 
        PR tree-optimization/66720
-       * gcc.dg/vect/pr48052.c: Use dg-require-effective-target
-       vect_int_mult.
+       * gcc.dg/vect/pr48052.c: Use dg-require-effective-target vect_int_mult.
 
 2015-07-05  Chung-Lin Tang  <cltang@codesourcery.com>
            Sandra Loosemore <sandra@codesourcery.com>
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr66757.c b/gcc/testsuite/gcc.c-torture/execute/pr66757.c
new file mode 100644 (file)
index 0000000..acd4d20
--- /dev/null
@@ -0,0 +1,15 @@
+/* PR tree-optimization/66757 */
+/* Testcase by Zhendong Su <su@cs.ucdavis.edu> */
+
+int a, b;
+
+int
+main (void)
+{
+  unsigned int t = (unsigned char) (~b); 
+
+  if ((t ^ 1) / 255)
+    __builtin_abort (); 
+
+  return 0;
+}