redirect_edge_var leak.
Richard Guenther
richard.guenther@gmail.com
Thu Sep 11 12:17:00 GMT 2008
On Thu, Sep 11, 2008 at 1:42 PM, Jan Hubicka <jh@suse.cz> wrote:
> Hi,
> this patch plugs redirect_edge_var memory leak.
> Bootstrapped/regtested i686-linux, OK?
Ok.
Thanks,
Richard.
> * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
> (free_var_map_entry): New function.
> (redirect_edge_var_map_destroy): Use it.
> Index: tree-ssa.c
> ===================================================================
> *** tree-ssa.c (revision 140271)
> --- tree-ssa.c (working copy)
> *************** redirect_edge_var_map_clear (edge e)
> *** 112,118 ****
> void
> redirect_edge_var_map_dup (edge newe, edge olde)
> {
> ! void **new_slot, **old_slot; edge_var_map_vector head;
>
> if (!edge_var_maps)
> return;
> --- 112,119 ----
> void
> redirect_edge_var_map_dup (edge newe, edge olde)
> {
> ! void **new_slot, **old_slot;
> ! edge_var_map_vector head;
>
> if (!edge_var_maps)
> return;
> *************** redirect_edge_var_map_vector (edge e)
> *** 149,154 ****
> --- 150,166 ----
> 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. */
>
> *************** redirect_edge_var_map_destroy (void)
> *** 157,162 ****
> --- 169,175 ----
> {
> 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;
> }
>
More information about the Gcc-patches
mailing list