aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-29 20:40:57 +0000
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-29 20:40:57 +0000
commit661b19df9f18dc1dc966a9858c9fea1cd0469e0a (patch)
tree2fd99f3cb470a0e83a991ce62006fcfdaaa57ebb
parent9827a01dcf7c6891905a3690d555253b9c6f8890 (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.vta6
-rw-r--r--gcc/tree-into-ssa.c13
-rw-r--r--gcc/tree-outof-ssa.c2
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;
}
}