From: Trevor Saunders <tbsaunde+...@tbsaunde.org> gcc/ChangeLog:
2016-07-24 Trevor Saunders <tbsaunde+...@tbsaunde.org> * tree-ssa-structalias.c (struct topo_info): Add constructor, and change types of members to auto_vec and auto_sbitmap. (init_topo_info): Remove. (topo_info::topo_info): New constructor. (solve_graph): Adjust. --- gcc/tree-ssa-structalias.c | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 5e3c7d0..94d81ed1 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -1536,36 +1536,21 @@ unify_nodes (constraint_graph_t graph, unsigned int to, unsigned int from, struct topo_info { + topo_info (); + /* sbitmap of visited nodes. */ - sbitmap visited; + auto_sbitmap visited; /* Array that stores the topological order of the graph, *in reverse*. */ - vec<unsigned> topo_order; + auto_vec<unsigned> topo_order; }; /* Initialize and return a topological info structure. */ -static struct topo_info * -init_topo_info (void) -{ - size_t size = graph->size; - struct topo_info *ti = XNEW (struct topo_info); - ti->visited = sbitmap_alloc (size); - bitmap_clear (ti->visited); - ti->topo_order.create (1); - return ti; -} - - -/* Free the topological sort info pointed to by TI. */ - -static void -free_topo_info (struct topo_info *ti) +topo_info::topo_info () : visited (graph->size), topo_order (1) { - sbitmap_free (ti->visited); - ti->topo_order.release (); - free (ti); + bitmap_clear (visited); } /* Visit the graph in topological order, and store the order in the @@ -2679,7 +2664,7 @@ solve_graph (constraint_graph_t graph) while (!bitmap_empty_p (changed)) { unsigned int i; - struct topo_info *ti = init_topo_info (); + topo_info *ti = new topo_info (); stats.iterations++; bitmap_obstack_initialize (&iteration_obstack); @@ -2797,7 +2782,7 @@ solve_graph (constraint_graph_t graph) } } } - free_topo_info (ti); + delete ti; bitmap_obstack_release (&iteration_obstack); } -- 2.9.0