On Sun, Jul 24, 2016 at 1:44 PM, wrote:
> From: Trevor Saunders
>
> gcc/ChangeLog:
>
> 2016-07-24 Trevor Saunders
>
> * 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 topo_order;
> + auto_vec 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 ();
I think it would be better to save the repeated allocations and instead just
clear the bitmap and the vector here. Your patch makes this more
difficult.
Richard.
>stats.iterations++;
>
>bitmap_obstack_initialize (_obstack);
> @@ -2797,7 +2782,7 @@ solve_graph (constraint_graph_t graph)
> }
> }
> }
> - free_topo_info (ti);
> + delete ti;
>bitmap_obstack_release (_obstack);
> }
>
> --
> 2.9.0
>