diff options
author | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-05-17 19:10:19 +0000 |
---|---|---|
committer | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-05-17 19:10:19 +0000 |
commit | 66d00abf7888c7d4d31b72132630c88662b6c28a (patch) | |
tree | 544422dc0a2a80acc7cc68573bdbe1f17698abc8 | |
parent | b48ab7facab1f4b52a8ce33c82fed70d07ab788b (diff) | |
download | gcc-66d00abf7888c7d4d31b72132630c88662b6c28a.tar.gz |
* tree-into-ssa.c (update_ssa): Clean up by shortening the
live range of DFS.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99847 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-into-ssa.c | 32 |
2 files changed, 21 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9e8979b0820..e475fd9a331 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-05-17 Kazu Hirata <kazu@cs.umass.edu> + + * tree-into-ssa.c (update_ssa): Clean up by shortening the + live range of DFS. + 2005-05-17 Hans-Peter Nilsson <hp@axis.com> * config/cris/cris.md (ncond, ocode, rcond): Remove separate diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 2e4c7f35d3d..4a95072414d 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -2611,7 +2611,7 @@ switch_virtuals_to_full_rewrite (void) void update_ssa (unsigned update_flags) { - bitmap *dfs, blocks; + bitmap blocks; basic_block bb, start_bb; bitmap_iterator bi; unsigned i; @@ -2646,13 +2646,8 @@ update_ssa (unsigned update_flags) if (insert_phi_p) { - /* If the caller requested PHI nodes to be added, compute - dominance frontiers and initialize live-in information data - structures (DEF_BLOCKS). */ - dfs = (bitmap *) xmalloc (last_basic_block * sizeof (bitmap *)); - FOR_EACH_BB (bb) - dfs[bb->index] = BITMAP_ALLOC (NULL); - compute_dominance_frontiers (dfs); + /* If the caller requested PHI nodes to be added, initialize + live-in information data structures (DEF_BLOCKS). */ /* For each SSA name N, the DEF_BLOCKS table describes where the name is defined, which blocks have PHI nodes for N, and which @@ -2663,7 +2658,6 @@ update_ssa (unsigned update_flags) } else { - dfs = NULL; def_blocks = NULL; } @@ -2738,6 +2732,15 @@ update_ssa (unsigned update_flags) and for symbols in SYMS_TO_RENAME. */ if (insert_phi_p) { + bitmap *dfs; + + /* If the caller requested PHI nodes to be added, compute + dominance frontiers. */ + dfs = xmalloc (last_basic_block * sizeof (bitmap *)); + FOR_EACH_BB (bb) + dfs[bb->index] = BITMAP_ALLOC (NULL); + compute_dominance_frontiers (dfs); + if (sbitmap_first_set_bit (old_ssa_names) >= 0) { /* insert_update_phi_nodes_for will call add_new_name_mapping @@ -2757,6 +2760,10 @@ update_ssa (unsigned update_flags) insert_updated_phi_nodes_for (referenced_var (i), dfs, blocks, update_flags); + FOR_EACH_BB (bb) + BITMAP_FREE (dfs[bb->index]); + free (dfs); + /* Insertion of PHI nodes may have added blocks to the region. We need to re-compute START_BB to include the newly added blocks. */ @@ -2813,13 +2820,6 @@ update_ssa (unsigned update_flags) /* Free allocated memory. */ done: - if (insert_phi_p) - { - FOR_EACH_BB (bb) - BITMAP_FREE (dfs[bb->index]); - free (dfs); - } - BITMAP_FREE (blocks); delete_update_ssa (); |