diff options
author | Jan Hubicka <jh@suse.cz> | 2005-06-28 01:33:02 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2005-06-27 23:33:02 +0000 |
commit | 6844185d068284ecccb52c718e2740fc9f3a1daf (patch) | |
tree | 52ebb42ae3f07c4bfcb29a8a669cb78feed3a95c /gcc/tree-ssa.c | |
parent | 370369e1a7e0b3a217c016236374883e274f6a44 (diff) | |
download | gcc-6844185d068284ecccb52c718e2740fc9f3a1daf.zip gcc-6844185d068284ecccb52c718e2740fc9f3a1daf.tar.gz gcc-6844185d068284ecccb52c718e2740fc9f3a1daf.tar.bz2 |
tree-optimize.c (exercute_free_datastructures): Do not disband implicit edges...
* tree-optimize.c (exercute_free_datastructures):
Do not disband implicit edges; do not attempt to build insn list;
do not free cfg annotations.
(execute_free_cfg_annotations); Disband implicit edges here;
free cfg annotations here too.
(pass_free_cfg_annotations); New pass.
(init_tree_optimization_passes); Add pass_free_cfg_annotations.
* tree-ssa-operands.c (free_ssa_operands); Recover; export.
* tree-ssa-operands.h (free_ssa_operands); declare.
* tree-ssa.c (delete_tree_ssa); Free SSA operand; mark stmt modified;
kill PHI nodes.
* tree-ssanames.c (release_defs): Kill addresses_taken.
From-SVN: r101360
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r-- | gcc/tree-ssa.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index dc28e71..1a09ef9 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -819,12 +819,18 @@ 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)) - { - tree stmt = bsi_stmt (bsi); - ggc_free (stmt->common.ann); - stmt->common.ann = NULL; - } + { + for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi)) + { + tree stmt = bsi_stmt (bsi); + stmt_ann_t ann = get_stmt_ann (stmt); + + free_ssa_operands (&ann->operands); + ann->addresses_taken = 0; + mark_stmt_modified (stmt); + } + set_phi_nodes (bb, NULL); + } /* Remove annotations from every referenced variable. */ for (i = 0; i < num_referenced_vars; i++) |