aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-01-26 12:05:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-01-26 12:05:22 +0000
commitbc6e9db4169f97f73385800ebd82afeb4caeebed (patch)
tree12c72ff76e36de47de6c4929d10f02eb77001ef3
parent22a08dd1269d6f5317dbb6e3a23365bb5c4e82a3 (diff)
downloadgcc-bc6e9db4169f97f73385800ebd82afeb4caeebed.zip
gcc-bc6e9db4169f97f73385800ebd82afeb4caeebed.tar.gz
gcc-bc6e9db4169f97f73385800ebd82afeb4caeebed.tar.bz2
re PR tree-optimization/69467 (Pattern X * C1 CMP 0 to X CMP 0 causes performance drop on 32-bit x86.)
2016-01-26 Richard Biener <rguenther@suse.de> PR middle-end/69467 * match.pd: Guard X * CST CMP 0 pattern with single_use. From-SVN: r232821
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/match.pd5
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 65b1fb3..ca46ff0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2016-01-26 Richard Biener <rguenther@suse.de>
+ PR middle-end/69467
+ * match.pd: Guard X * CST CMP 0 pattern with single_use.
+
+2016-01-26 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/69452
* tree-ssa-loop-im.c (move_computations_dom_walker): Remove.
(move_computations_dom_walker::before_dom_children): Rename
diff --git a/gcc/match.pd b/gcc/match.pd
index 069d271..5f28215 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -1821,12 +1821,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
(for cmp (simple_comparison)
scmp (swapped_simple_comparison)
(simplify
- (cmp (mult @0 INTEGER_CST@1) integer_zerop@2)
+ (cmp (mult@3 @0 INTEGER_CST@1) integer_zerop@2)
/* Handle unfolded multiplication by zero. */
(if (integer_zerop (@1))
(cmp @1 @2)
(if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (@0))
- && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (@0)))
+ && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (@0))
+ && single_use (@3))
/* If @1 is negative we swap the sense of the comparison. */
(if (tree_int_cst_sgn (@1) < 0)
(scmp @0 @2)