diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2010-06-09 22:09:41 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2010-06-09 22:09:41 +0000 |
commit | 7472eb13e97a3e2887f5cebc2becbdad37e8c917 (patch) | |
tree | 16cb9ff437410085c14df0ecfcb646e19a6e2c9c | |
parent | c12e2a5fcbca7f11586b1a1734f00ce7bbdeb8c8 (diff) | |
download | gcc-7472eb13e97a3e2887f5cebc2becbdad37e8c917.tar.gz |
Call compute_overall_effect_of_inner_loop from instantiate_scev_name.
2010-06-09 Sebastian Pop <sebastian.pop@amd.com>
* tree-scalar-evolution.c (instantiate_scev_name): Do not fail
the scev analysis when the variable is not used outside the loop
in a close phi node: call compute_overall_effect_of_inner_loop.
From-SVN: r160510
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-scalar-evolution.c | 16 |
2 files changed, 19 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 111d1e57a5e..8babd20f44f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2010-06-09 Sebastian Pop <sebastian.pop@amd.com> + * tree-scalar-evolution.c (instantiate_scev_name): Do not fail + the scev analysis when the variable is not used outside the loop + in a close phi node: call compute_overall_effect_of_inner_loop. + +2010-06-09 Sebastian Pop <sebastian.pop@amd.com> + * graphite-sese-to-poly.c (single_pred_cond): Renamed single_pred_cond_non_loop_exit. Return NULL for loop exit edges. (build_sese_conditions_before): Renamed call to single_pred_cond. diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index 5eb61740bee..13d897fd5ce 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -2172,9 +2172,19 @@ instantiate_scev_name (basic_block instantiate_below, else res = chrec; - if (res == NULL_TREE - || !dominated_by_p (CDI_DOMINATORS, instantiate_below, - gimple_bb (SSA_NAME_DEF_STMT (res)))) + /* When there is no loop_closed_phi_def, it means that the + variable is not used after the loop: try to still compute the + value of the variable when exiting the loop. */ + if (res == NULL_TREE) + { + loop_p loop = loop_containing_stmt (SSA_NAME_DEF_STMT (chrec)); + res = analyze_scalar_evolution (loop, chrec); + res = compute_overall_effect_of_inner_loop (loop, res); + res = instantiate_scev_r (instantiate_below, evolution_loop, res, + fold_conversions, cache, size_expr); + } + else if (!dominated_by_p (CDI_DOMINATORS, instantiate_below, + gimple_bb (SSA_NAME_DEF_STMT (res)))) res = chrec_dont_know; } |