aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-09-04 00:38:33 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2004-09-03 22:38:33 +0000
commit80d8221e0c34594db9939116db262200b4b7c242 (patch)
treee59551e0e65a59fe649b0f87ddc5560204162a2f /gcc
parentbb1058e4c2866efcfb59d127081e6afceaa16fd8 (diff)
downloadgcc-80d8221e0c34594db9939116db262200b4b7c242.zip
gcc-80d8221e0c34594db9939116db262200b4b7c242.tar.gz
gcc-80d8221e0c34594db9939116db262200b4b7c242.tar.bz2
cfg.c (free_edge): Use ggc_free.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/cfg.c4
-rw-r--r--gcc/passes.c1
-rw-r--r--gcc/tree-ssa.c13
-rw-r--r--gcc/tree-ssanames.c3
5 files changed, 24 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a8fbba5..ca212cd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/cfg.c b/gcc/cfg.c
index 003d09e..19c242b 100644
--- 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);
}
/* Create an edge connecting SRC and DEST with flags FLAGS. Return newly
diff --git a/gcc/passes.c b/gcc/passes.c
index 783e33d..7c6f002 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -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);
}
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index 13104fd..f6037c2 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -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;
}
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index 1e947d6..ad03a58 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -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);
}