diff options
author | Richard Biener <rguenther@suse.de> | 2016-01-26 12:05:22 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-01-26 12:05:22 +0000 |
commit | bc6e9db4169f97f73385800ebd82afeb4caeebed (patch) | |
tree | 12c72ff76e36de47de6c4929d10f02eb77001ef3 | |
parent | 22a08dd1269d6f5317dbb6e3a23365bb5c4e82a3 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/match.pd | 5 |
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) |