diff options
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index f738d40..48893d4 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1248,6 +1248,9 @@ replace_uses_by (tree name, tree val) FOR_EACH_IMM_USE_STMT (stmt, imm_iter, name) { + if (TREE_CODE (stmt) != PHI_NODE) + push_stmt_changes (&stmt); + FOR_EACH_IMM_USE_ON_STMT (use, imm_iter) { replace_exp (use, val); @@ -1265,21 +1268,25 @@ replace_uses_by (tree name, tree val) } } } + if (TREE_CODE (stmt) != PHI_NODE) { tree rhs; fold_stmt_inplace (stmt); + + /* FIXME. This should go in pop_stmt_changes. */ rhs = get_rhs (stmt); if (TREE_CODE (rhs) == ADDR_EXPR) recompute_tree_invariant_for_addr_expr (rhs); maybe_clean_or_replace_eh_stmt (stmt, stmt); - mark_new_vars_to_rename (stmt); + + pop_stmt_changes (&stmt); } } - gcc_assert (num_imm_uses (name) == 0); + gcc_assert (zero_imm_uses_p (name)); /* Also update the trees stored in loop structures. */ if (current_loops) @@ -3996,7 +4003,7 @@ tree_make_forwarder_block (edge fallthru) if (single_pred_p (bb)) return; - /* If we redirected a branch we must create new phi nodes at the + /* If we redirected a branch we must create new PHI nodes at the start of BB. */ for (phi = phi_nodes (dummy); phi; phi = PHI_CHAIN (phi)) { @@ -5684,7 +5691,7 @@ gimplify_val (block_stmt_iterator *bsi, tree type, tree exp) bsi_insert_before (bsi, new_stmt, BSI_SAME_STMT); if (gimple_in_ssa_p (cfun)) - mark_new_vars_to_rename (new_stmt); + mark_symbols_for_renaming (new_stmt); return t; } |