diff options
author | Bin Cheng <bin.cheng@arm.com> | 2016-05-03 08:38:18 +0000 |
---|---|---|
committer | Bin Cheng <amker@gcc.gnu.org> | 2016-05-03 08:38:18 +0000 |
commit | e0db140205f73e6fecf8dee1c1dd35d41e653d7b (patch) | |
tree | edbbea8539ed7cb082182017579697fb9b2ac21c /gcc/tree-ssa-loop-ivopts.c | |
parent | fb2647aaf55b453b37badfd40c14c59486a74584 (diff) | |
download | gcc-e0db140205f73e6fecf8dee1c1dd35d41e653d7b.zip gcc-e0db140205f73e6fecf8dee1c1dd35d41e653d7b.tar.gz gcc-e0db140205f73e6fecf8dee1c1dd35d41e653d7b.tar.bz2 |
tree-ssa-loop-ivopts.c (get_computation_cost_at): Don't clobber cbase.
* tree-ssa-loop-ivopts.c (get_computation_cost_at): Don't clobber
cbase.
From-SVN: r235805
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 9314363..e6d35a4 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -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); |