diff options
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) { |