aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2007-01-04 12:30:10 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2007-01-04 11:30:10 +0000
commit3a40c18a680f824dc4cb4ca77e0650e37052c82f (patch)
tree58cae202af2ebee37934e16f8848037db54c9be9 /gcc/tree-cfg.c
parentb06e8639fa88b579c1ea48123d4af902c2d7b101 (diff)
downloadgcc-3a40c18a680f824dc4cb4ca77e0650e37052c82f.zip
gcc-3a40c18a680f824dc4cb4ca77e0650e37052c82f.tar.gz
gcc-3a40c18a680f824dc4cb4ca77e0650e37052c82f.tar.bz2
cgraph.c (cgraph_release_function_body): New function.
* cgraph.c (cgraph_release_function_body): New function. (cgraph_remove_node): Use it. * cgraph.h (cgraph_release_function_body): Declare. * cgraphunit.c (cgraph_expand_function): Use it. * ipa.c (cgraph_remove_unreahchable_nodes): Use it. * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing is initialized and while compilation of other function is running. * tree-optimize.c (execute_free_cfg_annotations): Move code to clear statement CFG annotations from here to ... * tree-cfg.c (delete_tree_cfg_annotations): ... here. From-SVN: r120437
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 4358c7e..69b4b4b 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -2651,6 +2651,17 @@ disband_implicit_edges (void)
void
delete_tree_cfg_annotations (void)
{
+ basic_block bb;
+ block_stmt_iterator bsi;
+
+ /* Remove annotations from every tree in the function. */
+ FOR_EACH_BB (bb)
+ for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
+ {
+ tree stmt = bsi_stmt (bsi);
+ ggc_free (stmt->base.ann);
+ stmt->base.ann = NULL;
+ }
label_to_block_map = NULL;
}