summaryrefslogtreecommitdiff
path: root/gcc/tree-ssanames.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-ssanames.c')
-rw-r--r--gcc/tree-ssanames.c40
1 files changed, 16 insertions, 24 deletions
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index 5077808947b..21d5761d03b 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -57,13 +57,6 @@ Boston, MA 02110-1301, USA. */
We could also use a zone allocator for these objects since they have
a very well defined lifetime. If someone wants to experiment with that
this is the place to try it. */
-
-/* Array of all SSA_NAMEs used in the function. */
-VEC(tree,gc) *ssa_names;
-
-/* Free list of SSA_NAMEs. This list is wiped at the end of each function
- after we leave SSA form. */
-static GTY (()) tree free_ssanames;
/* Version numbers with special meanings. We start allocating new version
numbers after the special ones. */
@@ -79,7 +72,7 @@ unsigned int ssa_name_nodes_created;
void
init_ssanames (void)
{
- ssa_names = VEC_alloc (tree, gc, 50);
+ SSANAMES (cfun) = VEC_alloc (tree, gc, 50);
/* Version 0 is special, so reserve the first slot in the table. Though
currently unused, we may use version 0 in alias analysis as part of
@@ -88,8 +81,8 @@ init_ssanames (void)
We use VEC_quick_push here because we know that SSA_NAMES has at
least 50 elements reserved in it. */
- VEC_quick_push (tree, ssa_names, NULL_TREE);
- free_ssanames = NULL;
+ VEC_quick_push (tree, SSANAMES (cfun), NULL_TREE);
+ FREE_SSANAMES (cfun) = NULL;
}
/* Finalize management of SSA_NAMEs. */
@@ -97,8 +90,8 @@ init_ssanames (void)
void
fini_ssanames (void)
{
- VEC_free (tree, gc, ssa_names);
- free_ssanames = NULL;
+ VEC_free (tree, gc, SSANAMES (cfun));
+ FREE_SSANAMES (cfun) = NULL;
}
/* Dump some simple statistics regarding the re-use of SSA_NAME nodes. */
@@ -129,10 +122,10 @@ make_ssa_name (tree var, tree stmt)
gcc_assert (!stmt || EXPR_P (stmt) || TREE_CODE (stmt) == PHI_NODE);
/* If our free list has an element, then use it. */
- if (free_ssanames)
+ if (FREE_SSANAMES (cfun))
{
- t = free_ssanames;
- free_ssanames = TREE_CHAIN (free_ssanames);
+ t = FREE_SSANAMES (cfun);
+ FREE_SSANAMES (cfun) = TREE_CHAIN (FREE_SSANAMES (cfun));
#ifdef GATHER_STATISTICS
ssa_name_nodes_reused++;
#endif
@@ -140,13 +133,13 @@ make_ssa_name (tree var, tree stmt)
/* The node was cleared out when we put it on the free list, so
there is no need to do so again here. */
gcc_assert (ssa_name (SSA_NAME_VERSION (t)) == NULL);
- VEC_replace (tree, ssa_names, SSA_NAME_VERSION (t), t);
+ VEC_replace (tree, SSANAMES (cfun), SSA_NAME_VERSION (t), t);
}
else
{
t = make_node (SSA_NAME);
SSA_NAME_VERSION (t) = num_ssa_names;
- VEC_safe_push (tree, gc, ssa_names, t);
+ VEC_safe_push (tree, gc, SSANAMES (cfun), t);
#ifdef GATHER_STATISTICS
ssa_name_nodes_created++;
#endif
@@ -183,7 +176,7 @@ release_ssa_name (tree var)
/* Never release the default definition for a symbol. It's a
special SSA name that should always exist once it's created. */
- if (var == default_def (SSA_NAME_VAR (var)))
+ if (var == gimple_default_def (cfun, SSA_NAME_VAR (var)))
return;
/* If VAR has been registered for SSA updating, don't remove it.
@@ -213,7 +206,8 @@ release_ssa_name (tree var)
while (imm->next != imm)
delink_imm_use (imm->next);
- VEC_replace (tree, ssa_names, SSA_NAME_VERSION (var), NULL_TREE);
+ VEC_replace (tree, SSANAMES (cfun),
+ SSA_NAME_VERSION (var), NULL_TREE);
memset (var, 0, tree_size (var));
imm->prev = imm;
@@ -234,8 +228,8 @@ release_ssa_name (tree var)
SSA_NAME_IN_FREE_LIST (var) = 1;
/* And finally link it into the free list. */
- TREE_CHAIN (var) = free_ssanames;
- free_ssanames = var;
+ TREE_CHAIN (var) = FREE_SSANAMES (cfun);
+ FREE_SSANAMES (cfun) = var;
}
}
@@ -291,7 +285,7 @@ release_defs (tree stmt)
/* Make sure that we are in SSA. Otherwise, operand cache may point
to garbage. */
- gcc_assert (in_ssa_p);
+ gcc_assert (gimple_in_ssa_p (cfun));
FOR_EACH_SSA_TREE_OPERAND (def, stmt, iter, SSA_OP_ALL_DEFS)
if (TREE_CODE (def) == SSA_NAME)
@@ -307,5 +301,3 @@ replace_ssa_name_symbol (tree ssa_name, tree sym)
SSA_NAME_VAR (ssa_name) = sym;
TREE_TYPE (ssa_name) = TREE_TYPE (sym);
}
-
-#include "gt-tree-ssanames.h"