tree-into-ssa.c (update_ssa): Clean up by shortening the live range of DFS.
authorKazu Hirata <kazu@cs.umass.edu>
Tue, 17 May 2005 19:10:19 +0000 (19:10 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Tue, 17 May 2005 19:10:19 +0000 (19:10 +0000)
* tree-into-ssa.c (update_ssa): Clean up by shortening the
live range of DFS.

From-SVN: r99847

gcc/ChangeLog
gcc/tree-into-ssa.c

index 9e8979b0820220a26f2e0fc47589019fadb9c66f..e475fd9a331468a0ebca268b97ca3c69a3eb42bf 100644 (file)
@@ -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
index 2e4c7f35d3d84db906bdc74191067c8ea04ba9bb..4a95072414d6b625644b892a4f2ce647aeab7429 100644 (file)
@@ -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 ();