diff options
Diffstat (limited to 'gcc/tree-ssa-phiprop.c')
-rw-r--r-- | gcc/tree-ssa-phiprop.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-ssa-phiprop.c b/gcc/tree-ssa-phiprop.c index 30644372564..2a52a27fb54 100644 --- a/gcc/tree-ssa-phiprop.c +++ b/gcc/tree-ssa-phiprop.c @@ -159,9 +159,11 @@ phiprop_insert_phi (basic_block bb, gimple phi, gimple use_stmt, tree old_arg, new_var; gimple tmp; source_location locus; + tree block; old_arg = PHI_ARG_DEF_FROM_EDGE (phi, e); locus = gimple_phi_arg_location_from_edge (phi, e); + block = gimple_phi_arg_block_from_edge (phi, e); while (TREE_CODE (old_arg) == SSA_NAME && (SSA_NAME_VERSION (old_arg) >= n || phivn[SSA_NAME_VERSION (old_arg)].value == NULL_TREE)) @@ -169,6 +171,7 @@ phiprop_insert_phi (basic_block bb, gimple phi, gimple use_stmt, gimple def_stmt = SSA_NAME_DEF_STMT (old_arg); old_arg = gimple_assign_rhs1 (def_stmt); locus = gimple_location (def_stmt); + block = gimple_block (def_stmt); } if (TREE_CODE (old_arg) == SSA_NAME) @@ -203,6 +206,7 @@ phiprop_insert_phi (basic_block bb, gimple phi, gimple use_stmt, new_var = make_ssa_name (new_var, tmp); gimple_assign_set_lhs (tmp, new_var); gimple_set_location (tmp, locus); + gimple_set_block (tmp, block); gsi_insert_on_edge (e, tmp); update_stmt (tmp); @@ -216,7 +220,7 @@ phiprop_insert_phi (basic_block bb, gimple phi, gimple use_stmt, } } - add_phi_arg (new_phi, new_var, e, locus); + add_phi_arg (new_phi, new_var, e, locus, block); } update_stmt (new_phi); |