tree-ssa-loop-ivopts.c (get_computation_cost_at): Don't clobber cbase.
authorBin Cheng <bin.cheng@arm.com>
Tue, 3 May 2016 08:38:18 +0000 (08:38 +0000)
committerBin Cheng <amker@gcc.gnu.org>
Tue, 3 May 2016 08:38:18 +0000 (08:38 +0000)
* tree-ssa-loop-ivopts.c (get_computation_cost_at): Don't clobber
cbase.

From-SVN: r235805

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

index 3910c62b5ab21f166f5bbfdb33c30d49d4d7a919..d5895cacf5470a0633a35df6be62e661743e90ed 100644 (file)
@@ -1,3 +1,8 @@
+2016-05-03  Bin Cheng  <bin.cheng@arm.com>
+
+       * tree-ssa-loop-ivopts.c (get_computation_cost_at): Don't clobber
+       cbase.
+
 2016-05-03  Oleg Endo  <olegendo@gcc.gnu.org>
 
        * config/sh/sh.md (udivsi3, divsi3, mulsi3): Simplify.
index 9314363b53315fa88ff46c24d0f01421cd4b363f..e6d35a4af7a56157be0247362f76051a334ae812 100644 (file)
@@ -4814,17 +4814,19 @@ get_computation_cost_at (struct ivopts_data *data,
                (ratio, mem_mode,
                        TYPE_ADDR_SPACE (TREE_TYPE (utype))))
     {
+      tree real_cbase = cbase;
+
       if (cstepi == 0 && stmt_is_after_inc)
        {
          if (POINTER_TYPE_P (ctype))
-           cbase = fold_build2 (POINTER_PLUS_EXPR, ctype, cbase, cstep);
+           real_cbase = fold_build2 (POINTER_PLUS_EXPR, ctype, cbase, cstep);
          else
-           cbase = fold_build2 (PLUS_EXPR, ctype, cbase, cstep);
+           real_cbase = fold_build2 (PLUS_EXPR, ctype, cbase, cstep);
        }
-      cbase
-       = fold_build2 (MULT_EXPR, ctype, cbase, build_int_cst (ctype, ratio));
+      real_cbase = fold_build2 (MULT_EXPR, ctype, real_cbase,
+                               build_int_cst (ctype, ratio));
       cost = difference_cost (data,
-                             ubase, cbase,
+                             ubase, real_cbase,
                              &symbol_present, &var_present, &offset,
                              depends_on);
       cost.cost /= avg_loop_niter (data->current_loop);