]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-ssa-loop-ivopts.c (get_shiftadd_cost): Check equality using operand_equal_p.
authorBin Cheng <bin.cheng@arm.com>
Thu, 7 Nov 2013 08:34:02 +0000 (08:34 +0000)
committerBin Cheng <amker@gcc.gnu.org>
Thu, 7 Nov 2013 08:34:02 +0000 (08:34 +0000)
* tree-ssa-loop-ivopts.c (get_shiftadd_cost): Check equality
using operand_equal_p.

From-SVN: r204498

gcc/ChangeLog
gcc/tree-ssa-loop-ivopts.c

index fcbcbb5466f9a1a89bb6be98d554097e985e2053..89ce09751e6cca985ffb579f65ddce1896e15ec2 100644 (file)
@@ -1,3 +1,8 @@
+2013-11-07  Bin Cheng  <bin.cheng@arm.com>
+
+       * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Check equality
+       using operand_equal_p.
+
 2013-11-07  Bin Cheng  <bin.cheng@arm.com>
 
        * tree-ssa-loop-ivopts.c (alloc_iv): Lower address expressions.
index 220aae6878b762f0506d455e68de9c056488e7c8..f7da1267416141820f2dc0ee95bf9ec1ba82c7ab 100644 (file)
@@ -3500,17 +3500,21 @@ get_shiftadd_cost (tree expr, enum machine_mode mode, comp_cost cost0,
   int m = exact_log2 (int_cst_value (cst));
   int maxm = MIN (BITS_PER_WORD, GET_MODE_BITSIZE (mode));
   int sa_cost;
+  bool equal_p = false;
 
   if (!(m >= 0 && m < maxm))
     return false;
 
+  if (operand_equal_p (op1, mult, 0))
+    equal_p = true;
+
   sa_cost = (TREE_CODE (expr) != MINUS_EXPR
              ? shiftadd_cost (speed, mode, m)
-             : (mult == op1
+             : (equal_p
                 ? shiftsub1_cost (speed, mode, m)
                 : shiftsub0_cost (speed, mode, m)));
   res = new_cost (sa_cost, 0);
-  res = add_costs (res, mult == op1 ? cost0 : cost1);
+  res = add_costs (res, equal_p ? cost0 : cost1);
 
   STRIP_NOPS (multop);
   if (!is_gimple_val (multop))