]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/69467 (Pattern X * C1 CMP 0 to X CMP 0 causes performance...
authorRichard Biener <rguenther@suse.de>
Tue, 26 Jan 2016 12:05:22 +0000 (12:05 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 26 Jan 2016 12:05:22 +0000 (12:05 +0000)
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

gcc/ChangeLog
gcc/match.pd

index 65b1fb359cf33ebde019309d33cf04f086b2f425..ca46ff0bfa16bc70f04cb1119235f7223f7541a5 100644 (file)
@@ -1,3 +1,8 @@
+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
index 069d27183995c99cf2c46676d023193df1dd3043..5f28215701270a1a400018ebb58489b33c558ddd 100644 (file)
@@ -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)