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 | |
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 12 |
2 files changed, 12 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3910c62..d5895ca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. 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); |