aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorTrevor Saunders <tbsaunde+gcc@tbsaunde.org>2016-07-26 10:44:31 +0000
committerTrevor Saunders <tbsaunde@gcc.gnu.org>2016-07-26 10:44:31 +0000
commitb46e8e6aa49c19bc3ba149ba7d03ec1f0b347797 (patch)
treeeedfe44357a952b1432c15bb7f0ac04c16e4c925 /gcc/tree-ssa-structalias.c
parent61801db927998bb09c0c5c267869d3bf895d551a (diff)
downloadgcc-b46e8e6aa49c19bc3ba149ba7d03ec1f0b347797.zip
gcc-b46e8e6aa49c19bc3ba149ba7d03ec1f0b347797.tar.gz
gcc-b46e8e6aa49c19bc3ba149ba7d03ec1f0b347797.tar.bz2
add [cd]tors to scc_info
gcc/ChangeLog: 2016-07-26 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. From-SVN: r238751
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r--gcc/tree-ssa-structalias.c57
1 files changed, 22 insertions, 35 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index a96fcab..fd96c3a 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;
};
@@ -1824,38 +1827,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);
+ bitmap_clear (visited);
+ bitmap_clear (deleted);
+ node_mapping = XNEWVEC (unsigned int, size);
+ dfs = XCNEWVEC (unsigned int, size);
- for (i = 0; i < size; i++)
- si->node_mapping[i] = i;
-
- 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);
}
@@ -1871,13 +1860,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
@@ -2291,7 +2278,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);
@@ -2422,7 +2409,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);