diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-11 14:52:16 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-11 14:52:16 +0000 |
commit | 699456467ce74df6879e7d9baf48b774eae32ac6 (patch) | |
tree | 15b58ac6468105ef8a7eda80cf951f303edd8380 /gcc/tree-ssa.c | |
parent | 3665047ec31ad754105881dcace2c477fffbe507 (diff) | |
download | gcc-699456467ce74df6879e7d9baf48b774eae32ac6.tar.gz |
2008-09-11 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r140286
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@140290 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r-- | gcc/tree-ssa.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index eed15c6773f..6a1f6f353c8 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -112,7 +112,8 @@ redirect_edge_var_map_clear (edge e) void redirect_edge_var_map_dup (edge newe, edge olde) { - void **new_slot, **old_slot; edge_var_map_vector head; + void **new_slot, **old_slot; + edge_var_map_vector head; if (!edge_var_maps) return; @@ -149,6 +150,17 @@ redirect_edge_var_map_vector (edge e) return (edge_var_map_vector) *slot; } +/* Used by redirect_edge_var_map_destroy to free all memory. */ + +static bool +free_var_map_entry (const void *key ATTRIBUTE_UNUSED, + void **value, + void *data ATTRIBUTE_UNUSED) +{ + edge_var_map_vector head = (edge_var_map_vector) *value; + VEC_free (edge_var_map, heap, head); + return true; +} /* Clear the edge variable mappings. */ @@ -157,6 +169,7 @@ redirect_edge_var_map_destroy (void) { if (edge_var_maps) { + pointer_map_traverse (edge_var_maps, free_var_map_entry, NULL); pointer_map_destroy (edge_var_maps); edge_var_maps = NULL; } |