From 4c64356a3ebe4815eb20f398193327e78831b61b Mon Sep 17 00:00:00 2001 From: rakdver Date: Sun, 12 Nov 2006 20:59:28 +0000 Subject: [PATCH] * tree-flow.h (name_mappings_registered_p): Declare. * tree-into-ssa.c (name_mappings_registered_p): New function. * tree-cfg.c (tree_can_merge_blocks_p): Check name_mappings_registered_p instead of need_ssa_update_p. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118732 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/tree-cfg.c | 7 ++++--- gcc/tree-flow.h | 1 + gcc/tree-into-ssa.c | 7 +++++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf52ce8d1f1..22b956f1ff5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2006-11-12 Zdenek Dvorak + * tree-flow.h (name_mappings_registered_p): Declare. + * tree-into-ssa.c (name_mappings_registered_p): New function. + * tree-cfg.c (tree_can_merge_blocks_p): Check + name_mappings_registered_p instead of need_ssa_update_p. + +2006-11-12 Zdenek Dvorak + * tree-ssa-loop.c (tree_vectorize): Return the result of vectorize_loops. * tree-vectorizer.c (vectorize_loops): Return TODO_cleanup_cfg diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index ab5a234b3bc..7c397aaa8e6 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1200,11 +1200,13 @@ tree_can_merge_blocks_p (basic_block a, basic_block b) return false; /* It must be possible to eliminate all phi nodes in B. If ssa form - is not up-to-date, we cannot eliminate any phis. */ + is not up-to-date, we cannot eliminate any phis; however, if only + some symbols as whole are marked for renaming, this is not a problem, + as phi nodes for those symbols are irrelevant in updating anyway. */ phi = phi_nodes (b); if (phi) { - if (need_ssa_update_p ()) + if (name_mappings_registered_p ()) return false; for (; phi; phi = PHI_CHAIN (phi)) @@ -1242,7 +1244,6 @@ replace_uses_by (tree name, tree val) edge e; unsigned i; - FOR_EACH_IMM_USE_STMT (stmt, imm_iter, name) { FOR_EACH_IMM_USE_ON_STMT (use, imm_iter) diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 8013804f797..61910f9e1a9 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -716,6 +716,7 @@ void delete_update_ssa (void); void register_new_name_mapping (tree, tree); tree create_new_def_for (tree, tree, def_operand_p); bool need_ssa_update_p (void); +bool name_mappings_registered_p (void); bool name_registered_for_update_p (tree); bitmap ssa_names_to_replace (void); void release_ssa_name_after_update_ssa (tree name); diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 14a50b62c62..3bcddfebaeb 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -2659,6 +2659,13 @@ need_ssa_update_p (void) return syms_to_rename || old_ssa_names || new_ssa_names; } +/* Return true if SSA name mappings have been registered for SSA updating. */ + +bool +name_mappings_registered_p (void) +{ + return repl_tbl && htab_elements (repl_tbl) > 0; +} /* Return true if name N has been registered in the replacement table. */ -- 2.11.4.GIT