Iterator to visit SSA
Iterator to visit SSA gcc/ChangeLog: 2016-09-15 Kugan Vivekanandarajah <kuganv@linaro.org> * tree-ssanames.h (FOR_EACH_SSA_NAME): New. * cfgexpand.c (update_alias_info_with_stack_vars): Use FOR_EACH_SSA_NAME to iterate over SSA variables. (pass_expand::execute): Likewise. * omp-simd-clone.c (ipa_simd_modify_function_body): Likewise. * tree-cfg.c (dump_function_to_file): Likewise. * tree-into-ssa.c (pass_build_ssa::execute): Likewise. (update_ssa): Likewise. * tree-ssa-alias.c (dump_alias_info): Likewise. * tree-ssa-ccp.c (ccp_finalize): Likewise. * tree-ssa-coalesce.c (build_ssa_conflict_graph): Likewise. (create_outofssa_var_map): Likewise. (coalesce_ssa_name): Likewise. * tree-ssa-operands.c (dump_immediate_uses): Likewise. * tree-ssa-pre.c (compute_avail): Likewise. * tree-ssa-sccvn.c (init_scc_vn): Likewise. (scc_vn_restore_ssa_info): Likewise. (free_scc_vn): Likwise. (run_scc_vn): Likewise. * tree-ssa-structalias.c (compute_points_to_sets): Likewise. * tree-ssa-ter.c (new_temp_expr_table): Likewise. * tree-ssa-copy.c (fini_copy_prop): Likewise. * tree-ssa.c (verify_ssa): Likewise. From-SVN: r240152
This commit is contained in:
parent
7332afeab4
commit
46aa019a01
16 changed files with 137 additions and 133 deletions
|
@ -1,3 +1,29 @@
|
|||
2016-09-15 Kugan Vivekanandarajah <kuganv@linaro.org>
|
||||
|
||||
* tree-ssanames.h (FOR_EACH_SSA_NAME): New.
|
||||
* cfgexpand.c (update_alias_info_with_stack_vars): Use
|
||||
FOR_EACH_SSA_NAME to iterate over SSA variables.
|
||||
(pass_expand::execute): Likewise.
|
||||
* omp-simd-clone.c (ipa_simd_modify_function_body): Likewise.
|
||||
* tree-cfg.c (dump_function_to_file): Likewise.
|
||||
* tree-into-ssa.c (pass_build_ssa::execute): Likewise.
|
||||
(update_ssa): Likewise.
|
||||
* tree-ssa-alias.c (dump_alias_info): Likewise.
|
||||
* tree-ssa-ccp.c (ccp_finalize): Likewise.
|
||||
* tree-ssa-coalesce.c (build_ssa_conflict_graph): Likewise.
|
||||
(create_outofssa_var_map): Likewise.
|
||||
(coalesce_ssa_name): Likewise.
|
||||
* tree-ssa-operands.c (dump_immediate_uses): Likewise.
|
||||
* tree-ssa-pre.c (compute_avail): Likewise.
|
||||
* tree-ssa-sccvn.c (init_scc_vn): Likewise.
|
||||
(scc_vn_restore_ssa_info): Likewise.
|
||||
(free_scc_vn): Likwise.
|
||||
(run_scc_vn): Likewise.
|
||||
* tree-ssa-structalias.c (compute_points_to_sets): Likewise.
|
||||
* tree-ssa-ter.c (new_temp_expr_table): Likewise.
|
||||
* tree-ssa-copy.c (fini_copy_prop): Likewise.
|
||||
* tree-ssa.c (verify_ssa): Likewise.
|
||||
|
||||
2016-09-14 Matthew Fortune <matthew.fortune@imgtec.com>
|
||||
|
||||
* config.gcc (mips*-mti-elf*, mips*-mti-linux*): Set mips32r2
|
||||
|
|
|
@ -815,16 +815,15 @@ update_alias_info_with_stack_vars (void)
|
|||
if (decls_to_partitions)
|
||||
{
|
||||
unsigned i;
|
||||
tree name;
|
||||
hash_set<bitmap> visited;
|
||||
bitmap temp = BITMAP_ALLOC (&stack_var_bitmap_obstack);
|
||||
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
struct ptr_info_def *pi;
|
||||
|
||||
if (name
|
||||
&& POINTER_TYPE_P (TREE_TYPE (name))
|
||||
if (POINTER_TYPE_P (TREE_TYPE (name))
|
||||
&& ((pi = SSA_NAME_PTR_INFO (name)) != NULL))
|
||||
add_partitioned_vars_to_ptset (&pi->pt, decls_to_partitions,
|
||||
&visited, temp);
|
||||
|
@ -6270,16 +6269,15 @@ pass_expand::execute (function *fun)
|
|||
|
||||
/* Now propagate the RTL assignment of each partition to the
|
||||
underlying var of each SSA_NAME. */
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
tree name;
|
||||
|
||||
if (!name
|
||||
/* We might have generated new SSA names in
|
||||
update_alias_info_with_stack_vars. They will have a NULL
|
||||
defining statements, and won't be part of the partitioning,
|
||||
so ignore those. */
|
||||
|| !SSA_NAME_DEF_STMT (name))
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
/* We might have generated new SSA names in
|
||||
update_alias_info_with_stack_vars. They will have a NULL
|
||||
defining statements, and won't be part of the partitioning,
|
||||
so ignore those. */
|
||||
if (!SSA_NAME_DEF_STMT (name))
|
||||
continue;
|
||||
|
||||
adjust_one_expanded_partition_var (name);
|
||||
|
@ -6288,17 +6286,15 @@ pass_expand::execute (function *fun)
|
|||
/* Clean up RTL of variables that straddle across multiple
|
||||
partitions, and check that the rtl of any PARM_DECLs that are not
|
||||
cleaned up is that of their default defs. */
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
int part;
|
||||
|
||||
if (!name
|
||||
/* We might have generated new SSA names in
|
||||
update_alias_info_with_stack_vars. They will have a NULL
|
||||
defining statements, and won't be part of the partitioning,
|
||||
so ignore those. */
|
||||
|| !SSA_NAME_DEF_STMT (name))
|
||||
/* We might have generated new SSA names in
|
||||
update_alias_info_with_stack_vars. They will have a NULL
|
||||
defining statements, and won't be part of the partitioning,
|
||||
so ignore those. */
|
||||
if (!SSA_NAME_DEF_STMT (name))
|
||||
continue;
|
||||
part = var_to_partition (SA.map, name);
|
||||
if (part == NO_PARTITION)
|
||||
|
|
|
@ -931,11 +931,11 @@ ipa_simd_modify_function_body (struct cgraph_node *node,
|
|||
}
|
||||
|
||||
l = adjustments.length ();
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
tree name;
|
||||
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
if (name
|
||||
&& SSA_NAME_VAR (name)
|
||||
if (SSA_NAME_VAR (name)
|
||||
&& TREE_CODE (SSA_NAME_VAR (name)) == PARM_DECL)
|
||||
{
|
||||
for (j = 0; j < l; j++)
|
||||
|
|
|
@ -7581,11 +7581,13 @@ dump_function_to_file (tree fndecl, FILE *file, int flags)
|
|||
|
||||
any_var = true;
|
||||
}
|
||||
|
||||
tree name;
|
||||
|
||||
if (gimple_in_ssa_p (cfun))
|
||||
for (ix = 1; ix < num_ssa_names; ++ix)
|
||||
FOR_EACH_SSA_NAME (ix, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (ix);
|
||||
if (name && !SSA_NAME_VAR (name))
|
||||
if (!SSA_NAME_VAR (name))
|
||||
{
|
||||
fprintf (file, " ");
|
||||
print_generic_expr (file, TREE_TYPE (name), flags);
|
||||
|
|
|
@ -2341,7 +2341,6 @@ pass_build_ssa::execute (function *fun)
|
|||
{
|
||||
bitmap_head *dfs;
|
||||
basic_block bb;
|
||||
unsigned i;
|
||||
|
||||
/* Initialize operand data structures. */
|
||||
init_ssa_operands (fun);
|
||||
|
@ -2385,13 +2384,14 @@ pass_build_ssa::execute (function *fun)
|
|||
/* Try to get rid of all gimplifier generated temporaries by making
|
||||
its SSA names anonymous. This way we can garbage collect them
|
||||
all after removing unused locals which we do in our TODO. */
|
||||
for (i = 1; i < num_ssa_names; ++i)
|
||||
unsigned i;
|
||||
tree name;
|
||||
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree decl, name = ssa_name (i);
|
||||
if (!name
|
||||
|| SSA_NAME_IS_DEFAULT_DEF (name))
|
||||
if (SSA_NAME_IS_DEFAULT_DEF (name))
|
||||
continue;
|
||||
decl = SSA_NAME_VAR (name);
|
||||
tree decl = SSA_NAME_VAR (name);
|
||||
if (decl
|
||||
&& TREE_CODE (decl) == VAR_DECL
|
||||
&& !VAR_DECL_IS_VIRTUAL_OPERAND (decl)
|
||||
|
@ -3283,12 +3283,12 @@ update_ssa (unsigned update_flags)
|
|||
placement heuristics. */
|
||||
prepare_block_for_update (start_bb, insert_phi_p);
|
||||
|
||||
tree name;
|
||||
|
||||
if (flag_checking)
|
||||
for (i = 1; i < num_ssa_names; ++i)
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
if (!name
|
||||
|| virtual_operand_p (name))
|
||||
if (virtual_operand_p (name))
|
||||
continue;
|
||||
|
||||
/* For all but virtual operands, which do not have SSA names
|
||||
|
|
|
@ -450,6 +450,7 @@ void
|
|||
dump_alias_info (FILE *file)
|
||||
{
|
||||
unsigned i;
|
||||
tree ptr;
|
||||
const char *funcname
|
||||
= lang_hooks.decl_printable_name (current_function_decl, 2);
|
||||
tree var;
|
||||
|
@ -471,13 +472,11 @@ dump_alias_info (FILE *file)
|
|||
|
||||
fprintf (file, "\n\nFlow-insensitive points-to information\n\n");
|
||||
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
FOR_EACH_SSA_NAME (i, ptr, cfun)
|
||||
{
|
||||
tree ptr = ssa_name (i);
|
||||
struct ptr_info_def *pi;
|
||||
|
||||
if (ptr == NULL_TREE
|
||||
|| !POINTER_TYPE_P (TREE_TYPE (ptr))
|
||||
if (!POINTER_TYPE_P (TREE_TYPE (ptr))
|
||||
|| SSA_NAME_IN_FREE_LIST (ptr))
|
||||
continue;
|
||||
|
||||
|
|
|
@ -898,24 +898,23 @@ ccp_finalize (bool nonzero_p)
|
|||
{
|
||||
bool something_changed;
|
||||
unsigned i;
|
||||
tree name;
|
||||
|
||||
do_dbg_cnt ();
|
||||
|
||||
/* Derive alignment and misalignment information from partially
|
||||
constant pointers in the lattice or nonzero bits from partially
|
||||
constant integers. */
|
||||
for (i = 1; i < num_ssa_names; ++i)
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
ccp_prop_value_t *val;
|
||||
unsigned int tem, align;
|
||||
|
||||
if (!name
|
||||
|| (!POINTER_TYPE_P (TREE_TYPE (name))
|
||||
&& (!INTEGRAL_TYPE_P (TREE_TYPE (name))
|
||||
/* Don't record nonzero bits before IPA to avoid
|
||||
using too much memory. */
|
||||
|| !nonzero_p)))
|
||||
if (!POINTER_TYPE_P (TREE_TYPE (name))
|
||||
&& (!INTEGRAL_TYPE_P (TREE_TYPE (name))
|
||||
/* Don't record nonzero bits before IPA to avoid
|
||||
using too much memory. */
|
||||
|| !nonzero_p))
|
||||
continue;
|
||||
|
||||
val = get_value (name);
|
||||
|
|
|
@ -955,12 +955,11 @@ build_ssa_conflict_graph (tree_live_info_p liveinfo)
|
|||
if (bb == entry)
|
||||
{
|
||||
unsigned i;
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
{
|
||||
tree var = ssa_name (i);
|
||||
tree var;
|
||||
|
||||
if (!var
|
||||
|| !SSA_NAME_IS_DEFAULT_DEF (var)
|
||||
FOR_EACH_SSA_NAME (i, var, cfun)
|
||||
{
|
||||
if (!SSA_NAME_IS_DEFAULT_DEF (var)
|
||||
|| !SSA_NAME_VAR (var)
|
||||
|| VAR_P (SSA_NAME_VAR (var)))
|
||||
continue;
|
||||
|
@ -1261,10 +1260,9 @@ create_outofssa_var_map (coalesce_list *cl, bitmap used_in_copy)
|
|||
/* Now process result decls and live on entry variables for entry into
|
||||
the coalesce list. */
|
||||
first = NULL_TREE;
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
FOR_EACH_SSA_NAME (i, var, cfun)
|
||||
{
|
||||
var = ssa_name (i);
|
||||
if (var != NULL_TREE && !virtual_operand_p (var))
|
||||
if (!virtual_operand_p (var))
|
||||
{
|
||||
coalesce_with_default (var, cl, used_in_copy);
|
||||
|
||||
|
@ -1806,6 +1804,7 @@ coalesce_ssa_name (void)
|
|||
bitmap used_in_copies = BITMAP_ALLOC (NULL);
|
||||
var_map map;
|
||||
unsigned int i;
|
||||
tree a;
|
||||
|
||||
cl = create_coalesce_list ();
|
||||
map = create_outofssa_var_map (cl, used_in_copies);
|
||||
|
@ -1817,12 +1816,9 @@ coalesce_ssa_name (void)
|
|||
{
|
||||
hash_table<ssa_name_var_hash> ssa_name_hash (10);
|
||||
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
FOR_EACH_SSA_NAME (i, a, cfun)
|
||||
{
|
||||
tree a = ssa_name (i);
|
||||
|
||||
if (a
|
||||
&& SSA_NAME_VAR (a)
|
||||
if (SSA_NAME_VAR (a)
|
||||
&& !DECL_IGNORED_P (SSA_NAME_VAR (a))
|
||||
&& (!has_zero_uses (a) || !SSA_NAME_IS_DEFAULT_DEF (a)
|
||||
|| !VAR_P (SSA_NAME_VAR (a))))
|
||||
|
|
|
@ -503,14 +503,13 @@ static bool
|
|||
fini_copy_prop (void)
|
||||
{
|
||||
unsigned i;
|
||||
tree var;
|
||||
|
||||
/* Set the final copy-of value for each variable by traversing the
|
||||
copy-of chains. */
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
FOR_EACH_SSA_NAME (i, var, cfun)
|
||||
{
|
||||
tree var = ssa_name (i);
|
||||
if (!var
|
||||
|| !copy_of[i].value
|
||||
if (!copy_of[i].value
|
||||
|| copy_of[i].value == var)
|
||||
continue;
|
||||
|
||||
|
|
|
@ -1247,11 +1247,8 @@ dump_immediate_uses (FILE *file)
|
|||
unsigned int x;
|
||||
|
||||
fprintf (file, "Immediate_uses: \n\n");
|
||||
for (x = 1; x < num_ssa_names; x++)
|
||||
FOR_EACH_SSA_NAME (x, var, cfun)
|
||||
{
|
||||
var = ssa_name (x);
|
||||
if (!var)
|
||||
continue;
|
||||
dump_immediate_uses_for (file, var);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3670,15 +3670,14 @@ compute_avail (void)
|
|||
basic_block *worklist;
|
||||
size_t sp = 0;
|
||||
unsigned i;
|
||||
tree name;
|
||||
|
||||
/* We pretend that default definitions are defined in the entry block.
|
||||
This includes function arguments and the static chain decl. */
|
||||
for (i = 1; i < num_ssa_names; ++i)
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
pre_expr e;
|
||||
if (!name
|
||||
|| !SSA_NAME_IS_DEFAULT_DEF (name)
|
||||
if (!SSA_NAME_IS_DEFAULT_DEF (name)
|
||||
|| has_zero_uses (name)
|
||||
|| virtual_operand_p (name))
|
||||
continue;
|
||||
|
|
|
@ -4290,7 +4290,6 @@ free_vn_table (vn_tables_t table)
|
|||
static void
|
||||
init_scc_vn (void)
|
||||
{
|
||||
size_t i;
|
||||
int j;
|
||||
int *rpo_numbers_temp;
|
||||
|
||||
|
@ -4339,12 +4338,11 @@ init_scc_vn (void)
|
|||
|
||||
/* Create the VN_INFO structures, and initialize value numbers to
|
||||
TOP or VARYING for parameters. */
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
if (!name)
|
||||
continue;
|
||||
size_t i;
|
||||
tree name;
|
||||
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
VN_INFO_GET (name)->valnum = VN_TOP;
|
||||
VN_INFO (name)->needs_insertion = false;
|
||||
VN_INFO (name)->expr = NULL;
|
||||
|
@ -4402,11 +4400,12 @@ init_scc_vn (void)
|
|||
void
|
||||
scc_vn_restore_ssa_info (void)
|
||||
{
|
||||
for (unsigned i = 0; i < num_ssa_names; i++)
|
||||
unsigned i;
|
||||
tree name;
|
||||
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
if (name
|
||||
&& has_VN_INFO (name))
|
||||
if (has_VN_INFO (name))
|
||||
{
|
||||
if (VN_INFO (name)->needs_insertion)
|
||||
;
|
||||
|
@ -4428,6 +4427,7 @@ void
|
|||
free_scc_vn (void)
|
||||
{
|
||||
size_t i;
|
||||
tree name;
|
||||
|
||||
delete constant_to_value_id;
|
||||
constant_to_value_id = NULL;
|
||||
|
@ -4436,11 +4436,9 @@ free_scc_vn (void)
|
|||
shared_lookup_references.release ();
|
||||
XDELETEVEC (rpo_numbers);
|
||||
|
||||
for (i = 0; i < num_ssa_names; i++)
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
if (name
|
||||
&& has_VN_INFO (name)
|
||||
if (has_VN_INFO (name)
|
||||
&& VN_INFO (name)->needs_insertion)
|
||||
release_ssa_name (name);
|
||||
}
|
||||
|
@ -4797,13 +4795,11 @@ run_scc_vn (vn_lookup_kind default_vn_walk_kind_)
|
|||
|
||||
/* Initialize the value ids and prune out remaining VN_TOPs
|
||||
from dead code. */
|
||||
for (i = 1; i < num_ssa_names; ++i)
|
||||
tree name;
|
||||
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
vn_ssa_aux_t info;
|
||||
if (!name)
|
||||
continue;
|
||||
info = VN_INFO (name);
|
||||
vn_ssa_aux_t info = VN_INFO (name);
|
||||
if (!info->visited)
|
||||
info->valnum = name;
|
||||
if (info->valnum == name
|
||||
|
@ -4814,13 +4810,9 @@ run_scc_vn (vn_lookup_kind default_vn_walk_kind_)
|
|||
}
|
||||
|
||||
/* Propagate. */
|
||||
for (i = 1; i < num_ssa_names; ++i)
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
vn_ssa_aux_t info;
|
||||
if (!name)
|
||||
continue;
|
||||
info = VN_INFO (name);
|
||||
vn_ssa_aux_t info = VN_INFO (name);
|
||||
if (TREE_CODE (info->valnum) == SSA_NAME
|
||||
&& info->valnum != name
|
||||
&& info->value_id != VN_INFO (info->valnum)->value_id)
|
||||
|
@ -4832,11 +4824,9 @@ run_scc_vn (vn_lookup_kind default_vn_walk_kind_)
|
|||
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||
{
|
||||
fprintf (dump_file, "Value numbers:\n");
|
||||
for (i = 0; i < num_ssa_names; i++)
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
if (name
|
||||
&& VN_INFO (name)->visited
|
||||
if (VN_INFO (name)->visited
|
||||
&& SSA_VAL (name) != name)
|
||||
{
|
||||
print_generic_expr (dump_file, name, 0);
|
||||
|
|
|
@ -7028,7 +7028,6 @@ static void
|
|||
compute_points_to_sets (void)
|
||||
{
|
||||
basic_block bb;
|
||||
unsigned i;
|
||||
varinfo_t vi;
|
||||
|
||||
timevar_push (TV_TREE_PTA);
|
||||
|
@ -7077,11 +7076,12 @@ compute_points_to_sets (void)
|
|||
cfun->gimple_df->escaped.escaped = 0;
|
||||
|
||||
/* Compute the points-to sets for pointer SSA_NAMEs. */
|
||||
for (i = 0; i < num_ssa_names; ++i)
|
||||
unsigned i;
|
||||
tree ptr;
|
||||
|
||||
FOR_EACH_SSA_NAME (i, ptr, cfun)
|
||||
{
|
||||
tree ptr = ssa_name (i);
|
||||
if (ptr
|
||||
&& POINTER_TYPE_P (TREE_TYPE (ptr)))
|
||||
if (POINTER_TYPE_P (TREE_TYPE (ptr)))
|
||||
find_what_p_points_to (cfun->decl, ptr);
|
||||
}
|
||||
|
||||
|
|
|
@ -185,8 +185,6 @@ extern void debug_ter (FILE *, temp_expr_table *);
|
|||
static temp_expr_table *
|
||||
new_temp_expr_table (var_map map)
|
||||
{
|
||||
unsigned x;
|
||||
|
||||
temp_expr_table *t = XNEW (struct temp_expr_table);
|
||||
t->map = map;
|
||||
|
||||
|
@ -201,12 +199,13 @@ new_temp_expr_table (var_map map)
|
|||
|
||||
t->replaceable_expressions = NULL;
|
||||
t->num_in_part = XCNEWVEC (int, num_var_partitions (map));
|
||||
for (x = 1; x < num_ssa_names; x++)
|
||||
|
||||
unsigned x;
|
||||
tree name;
|
||||
|
||||
FOR_EACH_SSA_NAME (x, name, cfun)
|
||||
{
|
||||
int p;
|
||||
tree name = ssa_name (x);
|
||||
if (!name)
|
||||
continue;
|
||||
p = var_to_partition (map, name);
|
||||
if (p != NO_PARTITION)
|
||||
t->num_in_part[p]++;
|
||||
|
|
|
@ -1005,7 +1005,6 @@ error:
|
|||
DEBUG_FUNCTION void
|
||||
verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
|
||||
{
|
||||
size_t i;
|
||||
basic_block bb;
|
||||
basic_block *definition_block = XCNEWVEC (basic_block, num_ssa_names);
|
||||
ssa_op_iter iter;
|
||||
|
@ -1018,24 +1017,23 @@ verify_ssa (bool check_modified_stmt, bool check_ssa_operands)
|
|||
timevar_push (TV_TREE_SSA_VERIFY);
|
||||
|
||||
/* Keep track of SSA names present in the IL. */
|
||||
for (i = 1; i < num_ssa_names; i++)
|
||||
size_t i;
|
||||
tree name;
|
||||
|
||||
FOR_EACH_SSA_NAME (i, name, cfun)
|
||||
{
|
||||
tree name = ssa_name (i);
|
||||
if (name)
|
||||
gimple *stmt;
|
||||
TREE_VISITED (name) = 0;
|
||||
|
||||
verify_ssa_name (name, virtual_operand_p (name));
|
||||
|
||||
stmt = SSA_NAME_DEF_STMT (name);
|
||||
if (!gimple_nop_p (stmt))
|
||||
{
|
||||
gimple *stmt;
|
||||
TREE_VISITED (name) = 0;
|
||||
|
||||
verify_ssa_name (name, virtual_operand_p (name));
|
||||
|
||||
stmt = SSA_NAME_DEF_STMT (name);
|
||||
if (!gimple_nop_p (stmt))
|
||||
{
|
||||
basic_block bb = gimple_bb (stmt);
|
||||
if (verify_def (bb, definition_block,
|
||||
name, stmt, virtual_operand_p (name)))
|
||||
goto err;
|
||||
}
|
||||
basic_block bb = gimple_bb (stmt);
|
||||
if (verify_def (bb, definition_block,
|
||||
name, stmt, virtual_operand_p (name)))
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,10 @@ struct GTY ((variable_size)) range_info_def {
|
|||
#define num_ssa_names (vec_safe_length (cfun->gimple_df->ssa_names))
|
||||
#define ssa_name(i) ((*cfun->gimple_df->ssa_names)[(i)])
|
||||
|
||||
#define FOR_EACH_SSA_NAME(I, VAR, FN) \
|
||||
for (I = 1; SSANAMES (FN)->iterate (I, &VAR); ++I) \
|
||||
if (VAR)
|
||||
|
||||
/* Sets the value range to SSA. */
|
||||
extern void set_range_info (tree, enum value_range_type, const wide_int_ref &,
|
||||
const wide_int_ref &);
|
||||
|
|
Loading…
Add table
Reference in a new issue