tree-ssa-loop-im.c (tree_ssa_lim_finalize): Properly free the affine expansion cache.
2012-08-21 Richard Guenther <rguenther@suse.de> * tree-ssa-loop-im.c (tree_ssa_lim_finalize): Properly free the affine expansion cache. * tree-ssa-dom.c (free_expr_hash_elt_contents): New function, split out from ... (free_expr_hash_elt): ... this one. (record_cond): Properly free a not needed hashtable element. (lookup_avail_expr): Likewise. * tree-into-ssa.c (init_ssa_renamer): Specify a free function for the var_infos hashtable. (update_ssa): Likewise. From-SVN: r190560
This commit is contained in:
parent
825c743c87
commit
b6db991c95
4 changed files with 36 additions and 14 deletions
|
@ -1,3 +1,16 @@
|
|||
2012-08-21 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-ssa-loop-im.c (tree_ssa_lim_finalize): Properly free
|
||||
the affine expansion cache.
|
||||
* tree-ssa-dom.c (free_expr_hash_elt_contents): New function,
|
||||
split out from ...
|
||||
(free_expr_hash_elt): ... this one.
|
||||
(record_cond): Properly free a not needed hashtable element.
|
||||
(lookup_avail_expr): Likewise.
|
||||
* tree-into-ssa.c (init_ssa_renamer): Specify a free function
|
||||
for the var_infos hashtable.
|
||||
(update_ssa): Likewise.
|
||||
|
||||
2012-08-21 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* alloc-pool.c (pool_alloc): Fix valgrind annotation.
|
||||
|
|
|
@ -2291,7 +2291,7 @@ init_ssa_renamer (void)
|
|||
/* Allocate memory for the DEF_BLOCKS hash table. */
|
||||
gcc_assert (var_infos == NULL);
|
||||
var_infos = htab_create (VEC_length (tree, cfun->local_decls),
|
||||
var_info_hash, var_info_eq, NULL);
|
||||
var_info_hash, var_info_eq, free);
|
||||
|
||||
bitmap_obstack_initialize (&update_ssa_obstack);
|
||||
}
|
||||
|
@ -3170,7 +3170,7 @@ update_ssa (unsigned update_flags)
|
|||
{
|
||||
/* If we rename bare symbols initialize the mapping to
|
||||
auxiliar info we need to keep track of. */
|
||||
var_infos = htab_create (47, var_info_hash, var_info_eq, NULL);
|
||||
var_infos = htab_create (47, var_info_hash, var_info_eq, free);
|
||||
|
||||
/* If we have to rename some symbols from scratch, we need to
|
||||
start the process at the root of the CFG. FIXME, it should
|
||||
|
|
|
@ -649,19 +649,24 @@ print_expr_hash_elt (FILE * stream, const struct expr_hash_elt *element)
|
|||
}
|
||||
}
|
||||
|
||||
/* Delete variable sized pieces of the expr_hash_elt ELEMENT. */
|
||||
|
||||
static void
|
||||
free_expr_hash_elt_contents (struct expr_hash_elt *element)
|
||||
{
|
||||
if (element->expr.kind == EXPR_CALL)
|
||||
free (element->expr.ops.call.args);
|
||||
else if (element->expr.kind == EXPR_PHI)
|
||||
free (element->expr.ops.phi.args);
|
||||
}
|
||||
|
||||
/* Delete an expr_hash_elt and reclaim its storage. */
|
||||
|
||||
static void
|
||||
free_expr_hash_elt (void *elt)
|
||||
{
|
||||
struct expr_hash_elt *element = ((struct expr_hash_elt *)elt);
|
||||
|
||||
if (element->expr.kind == EXPR_CALL)
|
||||
free (element->expr.ops.call.args);
|
||||
|
||||
if (element->expr.kind == EXPR_PHI)
|
||||
free (element->expr.ops.phi.args);
|
||||
|
||||
free_expr_hash_elt_contents (element);
|
||||
free (element);
|
||||
}
|
||||
|
||||
|
@ -1203,7 +1208,7 @@ record_cond (cond_equivalence *p)
|
|||
VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack, element);
|
||||
}
|
||||
else
|
||||
free (element);
|
||||
free_expr_hash_elt (element);
|
||||
}
|
||||
|
||||
/* Build a cond_equivalence record indicating that the comparison
|
||||
|
@ -2404,9 +2409,11 @@ lookup_avail_expr (gimple stmt, bool insert)
|
|||
slot = htab_find_slot_with_hash (avail_exprs, &element, element.hash,
|
||||
(insert ? INSERT : NO_INSERT));
|
||||
if (slot == NULL)
|
||||
return NULL_TREE;
|
||||
|
||||
if (*slot == NULL)
|
||||
{
|
||||
free_expr_hash_elt_contents (&element);
|
||||
return NULL_TREE;
|
||||
}
|
||||
else if (*slot == NULL)
|
||||
{
|
||||
struct expr_hash_elt *element2 = XNEW (struct expr_hash_elt);
|
||||
*element2 = element;
|
||||
|
@ -2422,6 +2429,8 @@ lookup_avail_expr (gimple stmt, bool insert)
|
|||
VEC_safe_push (expr_hash_elt_t, heap, avail_exprs_stack, element2);
|
||||
return NULL_TREE;
|
||||
}
|
||||
else
|
||||
free_expr_hash_elt_contents (&element);
|
||||
|
||||
/* Extract the LHS of the assignment so that it can be used as the current
|
||||
definition of another variable. */
|
||||
|
|
|
@ -2634,7 +2634,7 @@ tree_ssa_lim_finalize (void)
|
|||
VEC_free (bitmap, heap, memory_accesses.all_refs_stored_in_loop);
|
||||
|
||||
if (memory_accesses.ttae_cache)
|
||||
pointer_map_destroy (memory_accesses.ttae_cache);
|
||||
free_affine_expand_cache (&memory_accesses.ttae_cache);
|
||||
}
|
||||
|
||||
/* Moves invariants from loops. Only "expensive" invariants are moved out --
|
||||
|
|
Loading…
Add table
Reference in a new issue