diff options
author | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-29 20:40:57 +0000 |
---|---|---|
committer | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-29 20:40:57 +0000 |
commit | 661b19df9f18dc1dc966a9858c9fea1cd0469e0a (patch) | |
tree | 2fd99f3cb470a0e83a991ce62006fcfdaaa57ebb | |
parent | 9827a01dcf7c6891905a3690d555253b9c6f8890 (diff) |
* tree-outof-ssa.c (replace_use_variable): Unshare exprs.var-tracking-assignments-4_4-merge-150235-before
* tree-into-ssa.c (prepare_block_for_update): Update debug bind
stmts before scanning for symbols marked for renaming.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/var-tracking-assignments-4_4-branch@150224 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.vta | 6 | ||||
-rw-r--r-- | gcc/tree-into-ssa.c | 13 | ||||
-rw-r--r-- | gcc/tree-outof-ssa.c | 2 |
3 files changed, 17 insertions, 4 deletions
diff --git a/gcc/ChangeLog.vta b/gcc/ChangeLog.vta index 0b97dcf99cd..74cd3ef8485 100644 --- a/gcc/ChangeLog.vta +++ b/gcc/ChangeLog.vta @@ -1,3 +1,9 @@ +2009-07-29 Alexandre Oliva <aoliva@redhat.com> + + * tree-outof-ssa.c (replace_use_variable): Unshare exprs. + * tree-into-ssa.c (prepare_block_for_update): Update debug bind + stmts before scanning for symbols marked for renaming. + 2009-07-12 Alexandre Oliva <aoliva@redhat.com> * cfgexpand.c (expand_debug_expr): Enclose CONST_STRINGs in MEMs. diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index ec227898c6f..379d80a60bc 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -2471,6 +2471,7 @@ prepare_block_for_update (basic_block bb, bool insert_phi_p) gimple_stmt_iterator si; edge e; edge_iterator ei; + bool rename = syms_to_rename && !bitmap_empty_p (syms_to_rename); mark_block_for_update (bb); @@ -2483,7 +2484,7 @@ prepare_block_for_update (basic_block bb, bool insert_phi_p) lhs_sym = DECL_P (lhs) ? lhs : SSA_NAME_VAR (lhs); - if (!symbol_marked_for_renaming (lhs_sym)) + if (!rename || !symbol_marked_for_renaming (lhs_sym)) continue; mark_def_interesting (lhs_sym, phi, bb, insert_phi_p); @@ -2509,11 +2510,17 @@ prepare_block_for_update (basic_block bb, bool insert_phi_p) stmt = gsi_stmt (si); + /* If we've turned an addressable name into a gimple reg, we + won't have an USEs of it in debug stmts to mark the stmt for + renaming. */ + if (rename && gimple_debug_bind_p (stmt)) + update_stmt (stmt); + FOR_EACH_SSA_USE_OPERAND (use_p, stmt, i, SSA_OP_ALL_USES) { tree use = USE_FROM_PTR (use_p); tree sym = DECL_P (use) ? use : SSA_NAME_VAR (use); - if (symbol_marked_for_renaming (sym)) + if (rename && symbol_marked_for_renaming (sym)) mark_use_interesting (sym, stmt, bb, insert_phi_p); } @@ -2521,7 +2528,7 @@ prepare_block_for_update (basic_block bb, bool insert_phi_p) { tree def = DEF_FROM_PTR (def_p); tree sym = DECL_P (def) ? def : SSA_NAME_VAR (def); - if (symbol_marked_for_renaming (sym)) + if (rename && symbol_marked_for_renaming (sym)) mark_def_interesting (sym, stmt, bb, insert_phi_p); } } diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c index 3cc7d896cb7..a82edfc1955 100644 --- a/gcc/tree-outof-ssa.c +++ b/gcc/tree-outof-ssa.c @@ -565,7 +565,7 @@ replace_use_variable (var_map map, use_operand_p p, gimple *expr) int version = SSA_NAME_VERSION (var); if (expr[version]) { - SET_USE (p, gimple_assign_rhs_to_tree (expr[version])); + SET_USE (p, unshare_expr (gimple_assign_rhs_to_tree (expr[version]))); return true; } } |