diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2005-03-25 18:41:28 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2005-03-25 18:41:28 +0000 |
commit | bef87a346c2ebf741fa60ca0c80f8f559551e6e6 (patch) | |
tree | 36dc2c60cc0910678a8a57037651dc2c5999e4b5 /gcc | |
parent | ccb527e4b7a69db20ae01dbd4bfe7b79d8ace6ec (diff) | |
download | gcc-bef87a346c2ebf741fa60ca0c80f8f559551e6e6.zip gcc-bef87a346c2ebf741fa60ca0c80f8f559551e6e6.tar.gz gcc-bef87a346c2ebf741fa60ca0c80f8f559551e6e6.tar.bz2 |
dominance.c (free_dominance_info): Speed up by freeing et data structures without maintaining other nodes.
* dominance.c (free_dominance_info): Speed up by freeing et
data structures without maintaining other nodes.
* et-forest.c (et_free_tree_force): New.
* et-forest.h: Add a prototype for et_free_tree_force.
From-SVN: r97054
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/dominance.c | 6 | ||||
-rw-r--r-- | gcc/et-forest.c | 9 | ||||
-rw-r--r-- | gcc/et-forest.h | 1 |
4 files changed, 20 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1559b19..f968b30 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-03-25 Kazu Hirata <kazu@cs.umass.edu> + + * dominance.c (free_dominance_info): Speed up by freeing et + data structures without maintaining other nodes. + * et-forest.c (et_free_tree_force): New. + * et-forest.h: Add a prototype for et_free_tree_force. + 2005-03-25 John David Anglin <dave.anglin@nrc-crnc.gc.ca> PR target/15491 diff --git a/gcc/dominance.c b/gcc/dominance.c index f001c68..d48701d 100644 --- a/gcc/dominance.c +++ b/gcc/dominance.c @@ -659,11 +659,11 @@ free_dominance_info (enum cdi_direction dir) FOR_ALL_BB (bb) { - delete_from_dominance_info (dir, bb); + et_free_tree_force (bb->dom[dir]); + bb->dom[dir] = NULL; } - /* If there are any nodes left, something is wrong. */ - gcc_assert (!n_bbs_in_dom_tree[dir]); + n_bbs_in_dom_tree[dir] = 0; dom_computed[dir] = DOM_NONE; } diff --git a/gcc/et-forest.c b/gcc/et-forest.c index 7fbbb77..df7c22a 100644 --- a/gcc/et-forest.c +++ b/gcc/et-forest.c @@ -499,6 +499,15 @@ et_free_tree (struct et_node *t) pool_free (et_nodes, t); } +/* Releases et tree T without maintaining other nodes. */ + +void +et_free_tree_force (struct et_node *t) +{ + pool_free (et_occurrences, t->rightmost_occ); + pool_free (et_nodes, t); +} + /* Sets father of et tree T to FATHER. */ void diff --git a/gcc/et-forest.h b/gcc/et-forest.h index 2f2c260..79d4bc9 100644 --- a/gcc/et-forest.h +++ b/gcc/et-forest.h @@ -73,6 +73,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_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 *); |