dominance.c (free_dominance_info): Speed up by freeing et data structures without...
authorKazu Hirata <kazu@cs.umass.edu>
Fri, 25 Mar 2005 18:41:28 +0000 (18:41 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Fri, 25 Mar 2005 18:41:28 +0000 (18:41 +0000)
* 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

gcc/ChangeLog
gcc/dominance.c
gcc/et-forest.c
gcc/et-forest.h

index 1559b19431214a62c2a11431496942c1eb8d57d5..f968b30cccaf1910ad3a7f55d760c7ae8b441559 100644 (file)
@@ -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
index f001c68024363ad5f8dbf00584293a468362f364..d48701d96a5a72d5ed2d8552b58b1a5d655c4bc7 100644 (file)
@@ -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;
 }
index 7fbbb77312c6cf44c9318378046cebd615971ae0..df7c22aff407d31f71e297e4961c2d3b4ecf4eec 100644 (file)
@@ -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
index 2f2c260e8d8ba9a6b97262d7efd00ed2ebe30603..79d4bc9723d4dd8300f5cb1ef23aca94311f4694 100644 (file)
@@ -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 *);