aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-into-ssa.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-into-ssa.c')
-rw-r--r--gcc/tree-into-ssa.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c
index 4d5992e2d56..edeeab5f1bf 100644
--- a/gcc/tree-into-ssa.c
+++ b/gcc/tree-into-ssa.c
@@ -1740,11 +1740,11 @@ rewrite_into_ssa (bool all)
timevar_pop (TV_TREE_SSA_OTHER);
}
-/* The ssa names in NAMES_TO_RENAME may have more than one definition;
+/* The marked ssa names may have more than one definition;
add phi nodes and rewrite them to fix this. */
void
-rewrite_ssa_into_ssa (bitmap names_to_rename)
+rewrite_ssa_into_ssa (void)
{
bitmap *dfs;
basic_block bb;
@@ -1753,9 +1753,11 @@ rewrite_ssa_into_ssa (bitmap names_to_rename)
unsigned i;
sbitmap snames_to_rename;
tree name;
+ bitmap to_rename;
- if (bitmap_first_set_bit (names_to_rename) < 0)
+ if (!any_marked_for_rewrite_p ())
return;
+ to_rename = marked_ssa_names ();
timevar_push (TV_TREE_SSA_OTHER);
@@ -1800,7 +1802,7 @@ rewrite_ssa_into_ssa (bitmap names_to_rename)
snames_to_rename = sbitmap_alloc (num_ssa_names);
sbitmap_zero (snames_to_rename);
- EXECUTE_IF_SET_IN_BITMAP (names_to_rename, 0, i,
+ EXECUTE_IF_SET_IN_BITMAP (to_rename, 0, i,
SET_BIT (snames_to_rename, i));
mark_def_sites_global_data.kills = sbitmap_alloc (num_ssa_names);
@@ -1826,7 +1828,7 @@ rewrite_ssa_into_ssa (bitmap names_to_rename)
set_current_def (ssa_name (i), NULL_TREE);
/* Insert PHI nodes at dominance frontiers of definition blocks. */
- insert_phi_nodes (dfs, names_to_rename);
+ insert_phi_nodes (dfs, to_rename);
/* Rewrite all the basic blocks in the program. */
timevar_push (TV_TREE_SSA_REWRITE_BLOCKS);
@@ -1855,8 +1857,9 @@ rewrite_ssa_into_ssa (bitmap names_to_rename)
/* Finalize the dominator walker. */
fini_walk_dominator_tree (&walk_data);
- EXECUTE_IF_SET_IN_BITMAP (names_to_rename, 0, i,
- release_ssa_name (ssa_name (i)));
+ unmark_all_for_rewrite ();
+
+ EXECUTE_IF_SET_IN_BITMAP (to_rename, 0, i, release_ssa_name (ssa_name (i)));
sbitmap_free (snames_to_rename);
@@ -1886,6 +1889,7 @@ rewrite_ssa_into_ssa (bitmap names_to_rename)
SSA_NAME_AUX (name) = NULL;
}
+ BITMAP_XFREE (to_rename);
timevar_pop (TV_TREE_SSA_OTHER);
}