alloc-pool.h (free_alloc_pool_if_empty): Prototype new function.

2006-06-20  Richard Guenther  <rguenther@suse.de>
	Michael Matz  <matz@suse.de>

	* alloc-pool.h (free_alloc_pool_if_empty): Prototype new
	function.
	* alloc-pool.c (free_alloc_pool_if_empty): New function.
	* et-forest.h (et_free_pools): Prototype new function.
	* et-forest.c (et_free_tree_force): Free parent occurrence. 
	(et_free_pools): New function.
	* dominance.c (free_dominance_info): Free et-forest alloc
	pools.

Co-Authored-By: Michael Matz <matz@suse.de>

From-SVN: r114817
This commit is contained in:
Richard Guenther 2006-06-20 16:19:29 +00:00 committed by Richard Biener
parent 1000b34d95
commit 5a6ccafd7d
6 changed files with 37 additions and 0 deletions

View File

@ -1,3 +1,15 @@
2006-06-20 Richard Guenther <rguenther@suse.de>
Michael Matz <matz@suse.de>
* alloc-pool.h (free_alloc_pool_if_empty): Prototype new
function.
* alloc-pool.c (free_alloc_pool_if_empty): New function.
* et-forest.h (et_free_pools): Prototype new function.
* et-forest.c (et_free_tree_force): Free parent occurrence.
(et_free_pools): New function.
* dominance.c (free_dominance_info): Free et-forest alloc
pools.
2006-06-20 Roger Sayle <roger@eyesopen.com>
* expr.c (expand_expr_real_1) <VECTOR_CST>: For vector constants with

View File

@ -207,6 +207,17 @@ free_alloc_pool (alloc_pool pool)
free (pool);
}
/* Frees the alloc_pool, if it is empty and zero *POOL in this case. */
void
free_alloc_pool_if_empty (alloc_pool *pool)
{
if ((*pool)->elts_free == (*pool)->elts_allocated)
{
free_alloc_pool (*pool);
*pool = NULL;
}
}
/* Allocates one element from the pool specified. */
void *
pool_alloc (alloc_pool pool)

View File

@ -49,6 +49,7 @@ typedef struct alloc_pool_def
extern alloc_pool create_alloc_pool (const char *, size_t, size_t);
extern void free_alloc_pool (alloc_pool);
extern void free_alloc_pool_if_empty (alloc_pool *);
extern void *pool_alloc (alloc_pool);
extern void pool_free (alloc_pool, void *);
extern void dump_alloc_pool_statistics (void);

View File

@ -663,6 +663,7 @@ free_dominance_info (enum cdi_direction dir)
et_free_tree_force (bb->dom[dir]);
bb->dom[dir] = NULL;
}
et_free_pools ();
n_bbs_in_dom_tree[dir] = 0;

View File

@ -505,9 +505,20 @@ void
et_free_tree_force (struct et_node *t)
{
pool_free (et_occurrences, t->rightmost_occ);
if (t->parent_occ)
pool_free (et_occurrences, t->parent_occ);
pool_free (et_nodes, t);
}
/* Release the alloc pools, if they are empty. */
void
et_free_pools (void)
{
free_alloc_pool_if_empty (&et_occurrences);
free_alloc_pool_if_empty (&et_nodes);
}
/* Sets father of et tree T to FATHER. */
void

View File

@ -74,6 +74,7 @@ struct et_node
struct et_node *et_new_tree (void *data);
void et_free_tree (struct et_node *);
void et_free_tree_force (struct et_node *);
void et_free_pools (void);
void et_set_father (struct et_node *, struct et_node *);
void et_split (struct et_node *);
struct et_node *et_nca (struct et_node *, struct et_node *);