aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2005-06-28 01:33:02 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2005-06-27 23:33:02 +0000
commit6844185d068284ecccb52c718e2740fc9f3a1daf (patch)
tree52ebb42ae3f07c4bfcb29a8a669cb78feed3a95c /gcc/tree-ssa.c
parent370369e1a7e0b3a217c016236374883e274f6a44 (diff)
downloadgcc-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.c18
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++)