cfg.c (free_edge): Use ggc_free.
authorJan Hubicka <jh@suse.cz>
Fri, 3 Sep 2004 22:38:33 +0000 (00:38 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 3 Sep 2004 22:38:33 +0000 (22:38 +0000)
2004-09-04  Jan Hubicka  <jh@suse.cz>

* cfg.c (free_edge): Use ggc_free.
(expunge_block): Use ggc_free.
* passes.c (rest_of_clean_state): Free after compilation.
* tree-ssa.c (delete_tree_ssa): Free annotations; call release_defs
* tree-ssanames.c (release_defs): Ignore non-SSA_NAME arguments.

From-SVN: r87058

gcc/ChangeLog
gcc/cfg.c
gcc/passes.c
gcc/tree-ssa.c
gcc/tree-ssanames.c

index a8fbba528732796d081ca391ce83634f421a419b..ca212cd504cab7122fffa63deecec0496c638bdb 100644 (file)
@@ -1,3 +1,11 @@
+2004-09-04  Jan Hubicka  <jh@suse.cz>
+
+       * cfg.c (free_edge): Use ggc_free.
+       (expunge_block): Use ggc_free.
+       * passes.c (rest_of_clean_state): Free after compilation.
+       * tree-ssa.c (delete_tree_ssa): Free annotations; call release_defs
+       * tree-ssanames.c (release_defs): Ignore non-SSA_NAME arguments.
+
 2004-09-03  James E Wilson  <wilson@specifixinc.com>
 
        * tree-ssa-alias.c (may_be_aliased): Move TREE_STATIC check after
index 003d09e05ff28a5e5641c969bb74e90e4a12a203..19c242b99c945a2a68612b338a3ab8e8795e0302 100644 (file)
--- a/gcc/cfg.c
+++ b/gcc/cfg.c
@@ -134,7 +134,7 @@ static void
 free_edge (edge e ATTRIBUTE_UNUSED)
 {
   n_edges--;
-  /* ggc_free (e);  */
+  ggc_free (e);
 }
 
 /* Free the memory associated with the edge structures.  */
@@ -269,7 +269,7 @@ expunge_block (basic_block b)
   unlink_block (b);
   BASIC_BLOCK (b->index) = NULL;
   n_basic_blocks--;
-  /* ggc_free (b); */
+  ggc_free (b);
 }
 \f
 /* Create an edge connecting SRC and DEST with flags FLAGS.  Return newly
index 783e33d8bbc27f1a7b618fa57cdbd1c0a1150cc9..7c6f002460429ab85506edbaea3c949f0764949d 100644 (file)
@@ -1685,6 +1685,7 @@ rest_of_clean_state (void)
 
   /* We're done with this function.  Free up memory if we can.  */
   free_after_parsing (cfun);
+  free_after_compilation (cfun);
 }
 \f
 
index 13104fdf81872971720b71594905ced7cd028924..f6037c2b5f925c0ad0c36c7a87ca35caf08e48a3 100644 (file)
@@ -641,13 +641,22 @@ delete_tree_ssa (void)
   /* Remove annotations from every tree in the function.  */
   FOR_EACH_BB (bb)
     for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
-      bsi_stmt (bsi)->common.ann = NULL;
+      {
+       tree stmt = bsi_stmt (bsi);
+        release_defs (stmt);
+       ggc_free (stmt->common.ann);
+       stmt->common.ann = NULL;
+      }
 
   /* Remove annotations from every referenced variable.  */
   if (referenced_vars)
     {
       for (i = 0; i < num_referenced_vars; i++)
-       referenced_var (i)->common.ann = NULL;
+       {
+         tree var = referenced_var (i);
+         ggc_free (var->common.ann);
+         var->common.ann = NULL;
+       }
       referenced_vars = NULL;
     }
 
index 1e947d69f1e45df78c26484d16bc9d491d3935aa..ad03a583227031a3f04d3d84cc4580d38a0f0c8e 100644 (file)
@@ -302,7 +302,8 @@ release_defs (tree stmt)
   ssa_op_iter iter;
 
   FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_ALL_DEFS)
-    release_ssa_name (def);
+    if (TREE_CODE (def) == SSA_NAME)
+      release_ssa_name (def);
 }