aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-07-07 07:46:57 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-07-07 07:46:57 +0000
commitd9ba196197966cb053dc13f973000c2ba8ace692 (patch)
tree1dacef79654b5af4db91d178b5f3f59df6c482e0
parentfc1cbdf389946c741f9341843a772b36fa586c6f (diff)
downloadgcc-d9ba196197966cb053dc13f973000c2ba8ace692.zip
gcc-d9ba196197966cb053dc13f973000c2ba8ace692.tar.gz
gcc-d9ba196197966cb053dc13f973000c2ba8ace692.tar.bz2
re PR tree-optimization/66739 (FAIL: gcc.target/aarch64/subs.c scan-assembler subs\tw[0-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. From-SVN: r225502
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/match.pd5
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f7562a0..c0500c2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/match.pd b/gcc/match.pd
index 53e911a..6411486 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -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