diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2010-08-11 20:24:30 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2010-08-11 20:24:30 +0000 |
commit | d1ba0721a18ce4996160dfa3fb042fe51114b63c (patch) | |
tree | 98a0719b68d9049543d31152f1c35e66b84f84f1 /gcc/graphite-sese-to-poly.c | |
parent | 5fed5769e41bbfc6026ad145307bb91a95a98865 (diff) | |
download | gcc-d1ba0721a18ce4996160dfa3fb042fe51114b63c.zip gcc-d1ba0721a18ce4996160dfa3fb042fe51114b63c.tar.gz gcc-d1ba0721a18ce4996160dfa3fb042fe51114b63c.tar.bz2 |
Also rewrite out of SSA scalar dependences going outside the SCoP region.
2010-06-12 Sebastian Pop <sebastian.pop@amd.com>
* graphite-clast-to-gimple.c (gloog): Remove call to
sese_adjust_liveout_phis.
* graphite-sese-to-poly.c (scev_analyzable_p): When scev returns an
SSA_NAME, allow it to be handled by rewrite_cross_bb_scalar_deps.
(rewrite_cross_bb_scalar_deps): Handle GIMPLE_PHI nodes: call
rewrite_phi_out_of_ssa.
* sese.c (get_vdef_before_sese): Removed.
(sese_adjust_vphi): Removed.
(sese_adjust_liveout_phis): Removed.
* sese.h (sese_adjust_liveout_phis): Removed.
From-SVN: r163118
Diffstat (limited to 'gcc/graphite-sese-to-poly.c')
-rw-r--r-- | gcc/graphite-sese-to-poly.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index 2897cd6..8baf379 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -2326,7 +2326,8 @@ scev_analyzable_p (tree def, sese region) loop_p loop = loop_containing_stmt (stmt); tree scev = scalar_evolution_in_region (region, loop, def); - return !chrec_contains_undetermined (scev); + return !chrec_contains_undetermined (scev) + && TREE_CODE (scev) != SSA_NAME; } /* Rewrite the scalar dependence of DEF used in USE_STMT with a memory @@ -2380,9 +2381,13 @@ rewrite_cross_bb_scalar_deps (sese region, gimple_stmt_iterator *gsi) def_bb = gimple_bb (stmt); FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, def) - if (def_bb != gimple_bb (use_stmt) - && gimple_code (use_stmt) != GIMPLE_PHI - && !is_gimple_debug (use_stmt)) + if (gimple_code (use_stmt) == GIMPLE_PHI) + { + gimple_stmt_iterator si = gsi_for_stmt (use_stmt); + rewrite_phi_out_of_ssa (&si); + } + else if (def_bb != gimple_bb (use_stmt) + && !is_gimple_debug (use_stmt)) { if (!zero_dim_array) { |