diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/tree-into-ssa.c | 4 | ||||
-rw-r--r-- | gcc/tree-ssa-dom.c | 18 |
3 files changed, 20 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ea4ee96..4c67cab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-05-27 Kazu Hirata <kazu@cs.umass.edu> + + * tree-into-ssa.c (update_ssa): Ensure that the operand cache + is up-to-date. + * tree-ssa-dom.c (tree_ssa_dominator_optimize): Call + update_stmt_if_modified before calling update_ssa. + 2005-05-27 Ralf Corsepius <ralf.corsepius@rtems.org> * config/rs6000/t-rtems: Remove roe multilib variant. diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 03561bac..e7ff242 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -2679,6 +2679,10 @@ update_ssa (unsigned update_flags) for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si)) { tree stmt = bsi_stmt (si); + /* We are going to use the operand cache API, such as + SET_USE, SET_DEF, and FOR_EACH_IMM_USE_FAST. The operand + cache for each statement should be up-to-date. */ + gcc_assert (!stmt_modified_p (stmt)); REWRITE_THIS_STMT (stmt) = 0; REGISTER_DEFS_IN_THIS_STMT (stmt) = 0; } diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 278d27a..cb4abcf 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -423,15 +423,6 @@ tree_ssa_dominator_optimize (void) /* Recursively walk the dominator tree optimizing statements. */ walk_dominator_tree (&walk_data, ENTRY_BLOCK_PTR); - /* If we exposed any new variables, go ahead and put them into - SSA form now, before we handle jump threading. This simplifies - interactions between rewriting of _DECL nodes into SSA form - and rewriting SSA_NAME nodes into SSA form after block - duplication and CFG manipulation. */ - update_ssa (TODO_update_ssa); - - free_all_edge_infos (); - { block_stmt_iterator bsi; basic_block bb; @@ -444,6 +435,15 @@ tree_ssa_dominator_optimize (void) } } + /* If we exposed any new variables, go ahead and put them into + SSA form now, before we handle jump threading. This simplifies + interactions between rewriting of _DECL nodes into SSA form + and rewriting SSA_NAME nodes into SSA form after block + duplication and CFG manipulation. */ + update_ssa (TODO_update_ssa); + + free_all_edge_infos (); + /* Thread jumps, creating duplicate blocks as needed. */ cfg_altered |= thread_through_all_blocks (); |