re PR tree-optimization/66739 (FAIL: gcc.target/aarch64/subs.c scan-assembler subs...
authorRichard Biener <rguenther@suse.de>
Tue, 7 Jul 2015 07:46:57 +0000 (07:46 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 7 Jul 2015 07:46:57 +0000 (07:46 +0000)
2015-07-07  Richard Biener  <rguenther@suse.de>

PR middle-end/66739
* match.pd: Condition A - B ==/!= 0 -> A ==/!= B on single-use
A - B.

From-SVN: r225502

gcc/ChangeLog
gcc/match.pd

index f7562a04cc106d8c78b72f861452ce42d509ae25..c0500c25b82fe99a066558ffb7dfcb7d296472bc 100644 (file)
@@ -1,3 +1,9 @@
+2015-07-07  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/66739
+       * match.pd: Condition A - B ==/!= 0 -> A ==/!= B on single-use
+       A - B.
+
 2015-07-06  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md (insv<mode>): Rename from insv.  Use SWI48
index 53e911a20aa649a2f4ea7e7754fd5a982c127d55..641148652b2f43fa99768fe50333b38f0daa0181 100644 (file)
@@ -1334,8 +1334,9 @@ along with GCC; see the file COPYING3.  If not see
    attempts to synthetize ABS_EXPR.  */
 (for cmp (eq ne)
  (simplify
-  (cmp (minus @0 @1) integer_zerop)
-  (cmp @0 @1)))
+  (cmp (minus@2 @0 @1) integer_zerop)
+  (if (single_use (@2))
+   (cmp @0 @1))))
 
 /* Transform comparisons of the form X * C1 CMP 0 to X CMP 0 in the
    signed arithmetic case.  That form is created by the compiler