summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-11 14:52:16 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2008-09-11 14:52:16 +0000
commit699456467ce74df6879e7d9baf48b774eae32ac6 (patch)
tree15b58ac6468105ef8a7eda80cf951f303edd8380 /gcc/tree-ssa.c
parent3665047ec31ad754105881dcace2c477fffbe507 (diff)
downloadgcc-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.c15
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;
}