This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 6/6] add [cd]tors to scc_info


On July 24, 2016 1:44:49 PM GMT+02:00, tbsaunde+gcc@tbsaunde.org wrote:
>From: Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
>
>gcc/ChangeLog:
>
>2016-07-24  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
>
>	* tree-ssa-structalias.c (struct scc_info): Change types of
>	members to auto_sbitmap and auto_vec.
>	(scc_info::scc_info): New constructor.
>	(scc_info::~scc_info): New destructor.
>	(init_scc_info): Remove.
>	(free_scc_info): Remove.
>	(find_indirect_cycles): Adjust.
>	(perform_var_substitution): Likewise.
>	(free_var_substitution_info): Likewise.
>---

OK.

Richard.


>gcc/tree-ssa-structalias.c | 57
>++++++++++++++++++----------------------------
> 1 file changed, 22 insertions(+), 35 deletions(-)
>
>diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
>index 94d81ed1..a669065 100644
>--- a/gcc/tree-ssa-structalias.c
>+++ b/gcc/tree-ssa-structalias.c
>@@ -1379,12 +1379,15 @@ static bitmap changed;
> 
> struct scc_info
> {
>-  sbitmap visited;
>-  sbitmap deleted;
>+  scc_info (size_t size);
>+  ~scc_info ();
>+
>+  auto_sbitmap visited;
>+  auto_sbitmap deleted;
>   unsigned int *dfs;
>   unsigned int *node_mapping;
>   int current_index;
>-  vec<unsigned> scc_stack;
>+  auto_vec<unsigned> scc_stack;
> };
> 
> 
>@@ -1809,38 +1812,24 @@ do_complex_constraint (constraint_graph_t
>graph, constraint_t c, bitmap delta,
> 
> /* Initialize and return a new SCC info structure.  */
> 
>-static struct scc_info *
>-init_scc_info (size_t size)
>+scc_info::scc_info (size_t size) :
>+  visited (size), deleted (size), current_index (0), scc_stack (1)
> {
>-  struct scc_info *si = XNEW (struct scc_info);
>-  size_t i;
>-
>-  si->current_index = 0;
>-  si->visited = sbitmap_alloc (size);
>-  bitmap_clear (si->visited);
>-  si->deleted = sbitmap_alloc (size);
>-  bitmap_clear (si->deleted);
>-  si->node_mapping = XNEWVEC (unsigned int, size);
>-  si->dfs = XCNEWVEC (unsigned int, size);
>-
>-  for (i = 0; i < size; i++)
>-    si->node_mapping[i] = i;
>+  bitmap_clear (visited);
>+  bitmap_clear (deleted);
>+  node_mapping = XNEWVEC (unsigned int, size);
>+  dfs = XCNEWVEC (unsigned int, size);
> 
>-  si->scc_stack.create (1);
>-  return si;
>+  for (size_t i = 0; i < size; i++)
>+    node_mapping[i] = i;
> }
> 
> /* Free an SCC info structure pointed to by SI */
> 
>-static void
>-free_scc_info (struct scc_info *si)
>+scc_info::~scc_info ()
> {
>-  sbitmap_free (si->visited);
>-  sbitmap_free (si->deleted);
>-  free (si->node_mapping);
>-  free (si->dfs);
>-  si->scc_stack.release ();
>-  free (si);
>+  free (node_mapping);
>+  free (dfs);
> }
> 
> 
>@@ -1856,13 +1845,11 @@ find_indirect_cycles (constraint_graph_t graph)
> {
>   unsigned int i;
>   unsigned int size = graph->size;
>-  struct scc_info *si = init_scc_info (size);
>+  scc_info si (size);
> 
>   for (i = 0; i < MIN (LAST_REF_NODE, size); i ++ )
>-    if (!bitmap_bit_p (si->visited, i) && find (i) == i)
>-      scc_visit (graph, si, i);
>-
>-  free_scc_info (si);
>+    if (!bitmap_bit_p (si.visited, i) && find (i) == i)
>+      scc_visit (graph, &si, i);
> }
> 
>/* Compute a topological ordering for GRAPH, and store the result in
>the
>@@ -2276,7 +2263,7 @@ perform_var_substitution (constraint_graph_t
>graph)
> {
>   unsigned int i;
>   unsigned int size = graph->size;
>-  struct scc_info *si = init_scc_info (size);
>+  scc_info *si = new scc_info (size);
> 
>   bitmap_obstack_initialize (&iteration_obstack);
>  pointer_equiv_class_table = new hash_table<equiv_class_hasher> (511);
>@@ -2407,7 +2394,7 @@ perform_var_substitution (constraint_graph_t
>graph)
> static void
> free_var_substitution_info (struct scc_info *si)
> {
>-  free_scc_info (si);
>+  delete si;
>   free (graph->pointer_label);
>   free (graph->loc_label);
>   free (graph->pointed_by);



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]