re PR c++/26757 (C++ front-end producing two DECLs with the same UID)

2006-05-23  Andrew MacLeod  <amacleod@redhat.com>
	
	PR c++/26757
	* tree-ssa-loop-im.c (determine_invariantness_stmt): Use 
	add_referenced_var instead of add_referenced_tmp_var.
	* tree-complex.c (create_one_component_var): Use add_referenced_var.
	* tree-ssa-loop-manip.c (create_iv, tree_unroll_loop): Use
	add_referenced_var.
	* tree-tailcall.c (adjust_accumulator_values, adjust_return_value,
	tree_optimize_tail_calls_1): Use add_referenced_var.
	* tree-ssa-loop-ivopts.c (create_new_iv): Use add_referenced_var.
	* tree-ssa-alias.c (create_memory_tag, create_global_var, create_sft):
	Use add_referenced_var.
	* tree-if-conv.c (ifc_temp_var): Use add_referenced_var.
	* gimplify.c (force_gimple_operand): Use add_referenced_var.
	* tree-ssa-phiopt.c (conditional_replacement, abs_replacement):
	Use add_referenced_var.
	* tree-dfa.c (struct walk_state): Remove.
	(find_referenced_vars): Remove walk state and vars_found hash table.
	(make_rename_temp): Use add_referenced_var.
	(find_vars_r): Pass less parameters to add_referenced_var.
	(referenced_var_p): New.  Is var in referenced_var hash table.
	(referenced_var_insert): Assert var isn't already in hash table.
	(add_referenced_var): Don't need walk_state parameter.  Add var if it
	isn't already in the hash table.
	(add_referenced_tmp_var): Remove.
	(find_new_referenced_vars_1): Use add_referenced_var.
	* tree-ssa-pre.c (create_expression_by_pieces, 
	insert_into_preds_of_block, insert_extra_phis, realify_fake_stores):
	Use add_referenced_var.
	* tree-vect-patterns.c (vect_pattern_recog_1): Use add_referenced_var.
	* lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
	lambda_loopnest_to_gcc_loopnest, perfect_nestify): Use 
	add_referenced_var.
	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref,
	vect_create_data_ref_ptr, vect_create_destination_var,
	vect_init_vector, vect_build_loop_niters, 
	vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
	vect_gen_niters_for_prolog_loop, vect_create_cond_for_align_checks):
	Use add_referenced_var.
	* tree-outof-ssa.c (create_temp): Use add_referenced_var.
	* tree-flow.h (add_referenced_tmp_var): Remove prototype
	(add_referenced_var): Add prototype.
	* tree-ssa-structalias.c (get_constraint_for, 
	intra_create_variable_infos): Use add_referenced_var.

From-SVN: r114018
This commit is contained in:
Andrew MacLeod 2006-05-23 14:07:21 +00:00 committed by Andrew Macleod
parent dcdf969d4b
commit f004ab022e
18 changed files with 123 additions and 102 deletions

View File

@ -1,3 +1,49 @@
2006-05-23 Andrew MacLeod <amacleod@redhat.com>
PR c++/26757
* tree-ssa-loop-im.c (determine_invariantness_stmt): Use
add_referenced_var instead of add_referenced_tmp_var.
* tree-complex.c (create_one_component_var): Use add_referenced_var.
* tree-ssa-loop-manip.c (create_iv, tree_unroll_loop): Use
add_referenced_var.
* tree-tailcall.c (adjust_accumulator_values, adjust_return_value,
tree_optimize_tail_calls_1): Use add_referenced_var.
* tree-ssa-loop-ivopts.c (create_new_iv): Use add_referenced_var.
* tree-ssa-alias.c (create_memory_tag, create_global_var, create_sft):
Use add_referenced_var.
* tree-if-conv.c (ifc_temp_var): Use add_referenced_var.
* gimplify.c (force_gimple_operand): Use add_referenced_var.
* tree-ssa-phiopt.c (conditional_replacement, abs_replacement):
Use add_referenced_var.
* tree-dfa.c (struct walk_state): Remove.
(find_referenced_vars): Remove walk state and vars_found hash table.
(make_rename_temp): Use add_referenced_var.
(find_vars_r): Pass less parameters to add_referenced_var.
(referenced_var_p): New. Is var in referenced_var hash table.
(referenced_var_insert): Assert var isn't already in hash table.
(add_referenced_var): Don't need walk_state parameter. Add var if it
isn't already in the hash table.
(add_referenced_tmp_var): Remove.
(find_new_referenced_vars_1): Use add_referenced_var.
* tree-ssa-pre.c (create_expression_by_pieces,
insert_into_preds_of_block, insert_extra_phis, realify_fake_stores):
Use add_referenced_var.
* tree-vect-patterns.c (vect_pattern_recog_1): Use add_referenced_var.
* lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
lambda_loopnest_to_gcc_loopnest, perfect_nestify): Use
add_referenced_var.
* tree-vect-transform.c (vect_create_addr_base_for_vector_ref,
vect_create_data_ref_ptr, vect_create_destination_var,
vect_init_vector, vect_build_loop_niters,
vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
vect_gen_niters_for_prolog_loop, vect_create_cond_for_align_checks):
Use add_referenced_var.
* tree-outof-ssa.c (create_temp): Use add_referenced_var.
* tree-flow.h (add_referenced_tmp_var): Remove prototype
(add_referenced_var): Add prototype.
* tree-ssa-structalias.c (get_constraint_for,
intra_create_variable_infos): Use add_referenced_var.
2006-05-23 Alexandre Oliva <aoliva@redhat.com>
* simplify-rtx.c (simplify_subreg): Adjust REG_OFFSET for

View File

@ -6228,7 +6228,7 @@ force_gimple_operand (tree expr, tree *stmts, bool simple, tree var)
if (referenced_vars)
{
for (t = gimplify_ctxp->temps; t ; t = TREE_CHAIN (t))
add_referenced_tmp_var (t);
add_referenced_var (t);
}
pop_gimplify_context (NULL);

View File

@ -1539,7 +1539,7 @@ lbv_to_gcc_expression (lambda_body_vector lbv,
/* Create a statement list and a linear expression temporary. */
stmts = alloc_stmt_list ();
resvar = create_tmp_var (type, "lbvtmp");
add_referenced_tmp_var (resvar);
add_referenced_var (resvar);
/* Start at 0. */
stmt = build2 (MODIFY_EXPR, void_type_node, resvar, integer_zero_node);
@ -1626,7 +1626,7 @@ lle_to_gcc_expression (lambda_linear_expression lle,
/* Create a statement list and a linear expression temporary. */
stmts = alloc_stmt_list ();
resvar = create_tmp_var (type, "lletmp");
add_referenced_tmp_var (resvar);
add_referenced_var (resvar);
/* Build up the linear expressions, and put the variable representing the
result in the results array. */
@ -1846,7 +1846,7 @@ lambda_loopnest_to_gcc_loopnest (struct loop *old_loopnest,
/* First, build the new induction variable temporary */
ivvar = create_tmp_var (type, "lnivtmp");
add_referenced_tmp_var (ivvar);
add_referenced_var (ivvar);
VEC_safe_push (tree, heap, new_ivs, ivvar);
@ -2457,7 +2457,7 @@ perfect_nestify (struct loops *loops,
/* Create the new iv. */
oldivvar = VEC_index (tree, loopivs, 0);
ivvar = create_tmp_var (TREE_TYPE (oldivvar), "perfectiv");
add_referenced_tmp_var (ivvar);
add_referenced_var (ivvar);
standard_iv_increment_position (newloop, &bsi, &insert_after);
create_iv (VEC_index (tree, lbounds, 0),
build_int_cst (TREE_TYPE (oldivvar), VEC_index (int, steps, 0)),
@ -2468,7 +2468,7 @@ perfect_nestify (struct loops *loops,
exit_condition = get_loop_exit_condition (newloop);
uboundvar = create_tmp_var (integer_type_node, "uboundvar");
add_referenced_tmp_var (uboundvar);
add_referenced_var (uboundvar);
stmt = build2 (MODIFY_EXPR, void_type_node, uboundvar,
VEC_index (tree, ubounds, 0));
uboundvar = make_ssa_name (uboundvar, stmt);

View File

@ -387,7 +387,7 @@ create_one_component_var (tree type, tree orig, const char *prefix,
const char *suffix, enum tree_code code)
{
tree r = create_tmp_var (type, prefix);
add_referenced_tmp_var (r);
add_referenced_var (r);
DECL_SOURCE_LOCATION (r) = DECL_SOURCE_LOCATION (orig);
DECL_ARTIFICIAL (r) = 1;

View File

@ -65,19 +65,10 @@ struct dfa_stats_d
};
/* State information for find_vars_r. */
struct walk_state
{
/* Hash table used to avoid adding the same variable more than once. */
htab_t vars_found;
};
/* Local functions. */
static void collect_dfa_stats (struct dfa_stats_d *);
static tree collect_dfa_stats_r (tree *, int *, void *);
static tree find_vars_r (tree *, int *, void *);
static void add_referenced_var (tree, struct walk_state *);
/* Global declarations. */
@ -106,23 +97,16 @@ htab_t default_defs;
static unsigned int
find_referenced_vars (void)
{
htab_t vars_found;
basic_block bb;
block_stmt_iterator si;
struct walk_state walk_state;
vars_found = htab_create (50, htab_hash_pointer, htab_eq_pointer, NULL);
memset (&walk_state, 0, sizeof (walk_state));
walk_state.vars_found = vars_found;
FOR_EACH_BB (bb)
for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si))
{
tree *stmt_p = bsi_stmt_ptr (si);
walk_tree (stmt_p, find_vars_r, &walk_state, NULL);
walk_tree (stmt_p, find_vars_r, NULL, NULL);
}
htab_delete (vars_found);
return 0;
}
@ -243,7 +227,7 @@ make_rename_temp (tree type, const char *prefix)
if (referenced_vars)
{
add_referenced_tmp_var (t);
add_referenced_var (t);
mark_sym_for_renaming (t);
}
@ -607,14 +591,12 @@ collect_dfa_stats_r (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED,
the function. */
static tree
find_vars_r (tree *tp, int *walk_subtrees, void *data)
find_vars_r (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
{
struct walk_state *walk_state = (struct walk_state *) data;
/* If T is a regular variable that the optimizers are interested
in, add it to the list of variables. */
if (SSA_VAR_P (*tp))
add_referenced_var (*tp, walk_state);
add_referenced_var (*tp);
/* Type, _DECL and constant nodes have no interesting children.
Ignore them. */
@ -624,6 +606,21 @@ find_vars_r (tree *tp, int *walk_subtrees, void *data)
return NULL_TREE;
}
/* Lookup VAR in the referenced_vars hashtable and return true if it is
present. */
static inline bool
referenced_var_p (tree var)
{
struct int_tree_map *h, in;
in.uid = DECL_UID (var);
h = (struct int_tree_map *) htab_find_with_hash (referenced_vars,
&in,
in.uid);
if (h)
return h->to != NULL_TREE;
return false;
}
/* Lookup UID in the referenced_vars hashtable and return the associated
variable. */
@ -652,6 +649,9 @@ referenced_var_insert (unsigned int uid, tree to)
h->uid = uid;
h->to = to;
loc = htab_find_slot_with_hash (referenced_vars, h, uid, INSERT);
/* This assert can only trigger if a variable with the same UID has been
inserted already. */
gcc_assert ((*(struct int_tree_map **)loc) == NULL);
*(struct int_tree_map **) loc = h;
}
@ -705,33 +705,21 @@ set_default_def (tree var, tree def)
}
}
/* Add VAR to the list of dereferenced variables.
/* Add VAR to the list of referenced variables if it isn't already there. */
WALK_STATE contains a hash table used to avoid adding the same
variable more than once. Note that this function assumes that
VAR is a valid SSA variable. If WALK_STATE is NULL, no
duplicate checking is done. */
static void
add_referenced_var (tree var, struct walk_state *walk_state)
void
add_referenced_var (tree var)
{
void **slot;
var_ann_t v_ann;
v_ann = get_var_ann (var);
if (walk_state)
slot = htab_find_slot (walk_state->vars_found, (void *) var, INSERT);
else
slot = NULL;
if (slot == NULL || *slot == NULL)
gcc_assert (DECL_P (var));
if (!referenced_var_p (var))
{
/* This is the first time we find this variable, add it to the
REFERENCED_VARS array and annotate it with attributes that are
intrinsic to the variable. */
if (slot)
*slot = (void *) var;
referenced_var_insert (DECL_UID (var), var);
@ -750,7 +738,7 @@ add_referenced_var (tree var, struct walk_state *walk_state)
variables because it cannot be propagated by the
optimizers. */
&& (TREE_CONSTANT (var) || TREE_READONLY (var)))
walk_tree (&DECL_INITIAL (var), find_vars_r, walk_state, 0);
walk_tree (&DECL_INITIAL (var), find_vars_r, NULL, 0);
}
}
@ -778,19 +766,6 @@ get_virtual_var (tree var)
return var;
}
/* Add a temporary variable to REFERENCED_VARS. This is similar to
add_referenced_var, but is used by passes that need to add new temps to
the REFERENCED_VARS array after the program has been scanned for
variables. The variable will just receive a new UID and be added
to the REFERENCED_VARS array without checking for duplicates. */
void
add_referenced_tmp_var (tree var)
{
add_referenced_var (var, NULL);
}
/* Mark all the non-SSA variables found in STMT's operands to be
processed by update_ssa. */
@ -868,7 +843,7 @@ find_new_referenced_vars_1 (tree *tp, int *walk_subtrees,
if (TREE_CODE (t) == VAR_DECL && !var_ann (t))
{
add_referenced_tmp_var (t);
add_referenced_var (t);
mark_sym_for_renaming (t);
}

View File

@ -633,7 +633,7 @@ extern void debug_variable (tree);
extern void dump_subvars_for (FILE *, tree);
extern void debug_subvars_for (tree);
extern tree get_virtual_var (tree);
extern void add_referenced_tmp_var (tree);
extern void add_referenced_var (tree);
extern void mark_new_vars_to_rename (tree);
extern void find_new_referenced_vars (tree *);

View File

@ -989,7 +989,7 @@ ifc_temp_var (tree type, tree exp)
/* Create new temporary variable. */
var = create_tmp_var (type, name);
add_referenced_tmp_var (var);
add_referenced_var (var);
/* Build new statement to assign EXP to new variable. */
stmt = build2 (MODIFY_EXPR, type, var, exp);

View File

@ -168,9 +168,9 @@ create_temp (tree t)
}
DECL_ARTIFICIAL (tmp) = DECL_ARTIFICIAL (t);
DECL_IGNORED_P (tmp) = DECL_IGNORED_P (t);
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
/* add_referenced_tmp_var will create the annotation and set up some
/* add_referenced_var will create the annotation and set up some
of the flags in the annotation. However, some flags we need to
inherit from our original variable. */
var_ann (tmp)->symbol_mem_tag = var_ann (t)->symbol_mem_tag;

View File

@ -2141,7 +2141,7 @@ create_memory_tag (tree type, bool is_type_tag)
ann->symbol_mem_tag = NULL_TREE;
/* Add the tag to the symbol table. */
add_referenced_tmp_var (tag);
add_referenced_var (tag);
return tag;
}
@ -2253,7 +2253,7 @@ create_global_var (void)
create_var_ann (global_var);
mark_call_clobbered (global_var, ESCAPE_UNKNOWN);
add_referenced_tmp_var (global_var);
add_referenced_var (global_var);
mark_sym_for_renaming (global_var);
}
@ -2900,7 +2900,7 @@ create_sft (tree var, tree field, unsigned HOST_WIDE_INT offset,
/* Add the new variable to REFERENCED_VARS. */
ann = get_var_ann (subvar);
ann->symbol_mem_tag = NULL;
add_referenced_tmp_var (subvar);
add_referenced_var (subvar);
SFT_PARENT_VAR (subvar) = var;
SFT_OFFSET (subvar) = offset;
SFT_SIZE (subvar) = size;

View File

@ -624,7 +624,7 @@ determine_invariantness_stmt (struct dom_walk_data *dw_data ATTRIBUTE_UNUSED,
/* stmt must be MODIFY_EXPR. */
var = create_tmp_var (TREE_TYPE (rhs), "reciptmp");
add_referenced_tmp_var (var);
add_referenced_var (var);
stmt1 = build2 (MODIFY_EXPR, void_type_node, var,
build2 (RDIV_EXPR, TREE_TYPE (rhs),

View File

@ -5123,7 +5123,7 @@ create_new_iv (struct ivopts_data *data, struct iv_cand *cand)
}
gimple_add_tmp_var (cand->var_before);
add_referenced_tmp_var (cand->var_before);
add_referenced_var (cand->var_before);
base = unshare_expr (cand->iv->base);

View File

@ -60,7 +60,7 @@ create_iv (tree base, tree step, tree var, struct loop *loop,
if (!var)
{
var = create_tmp_var (TREE_TYPE (base), "ivtmp");
add_referenced_tmp_var (var);
add_referenced_var (var);
}
vb = make_ssa_name (var, NULL_TREE);
@ -916,7 +916,7 @@ tree_unroll_loop (struct loops *loops, struct loop *loop, unsigned factor,
else
{
var = create_tmp_var (TREE_TYPE (init), "unrinittmp");
add_referenced_tmp_var (var);
add_referenced_var (var);
}
new_init = make_ssa_name (var, NULL_TREE);

View File

@ -410,7 +410,7 @@ conditional_replacement (basic_block cond_bb, basic_block middle_bb,
return false;
tmp = create_tmp_var (TREE_TYPE (cond), NULL);
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
new_var = make_ssa_name (tmp, NULL);
old_result = cond;
cond = new_var;
@ -512,7 +512,7 @@ conditional_replacement (basic_block cond_bb, basic_block middle_bb,
op0 = TREE_OPERAND (cond, 0);
tmp = create_tmp_var (TREE_TYPE (op0), NULL);
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
cond_tmp = make_ssa_name (tmp, NULL);
new = build2 (MODIFY_EXPR, TREE_TYPE (cond_tmp), cond_tmp, op0);
SSA_NAME_DEF_STMT (cond_tmp) = new;
@ -959,7 +959,7 @@ abs_replacement (basic_block cond_bb, basic_block middle_bb,
if (negate)
{
tree tmp = create_tmp_var (TREE_TYPE (result), NULL);
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
lhs = make_ssa_name (tmp, NULL);
}
else

View File

@ -2422,7 +2422,7 @@ create_expression_by_pieces (basic_block block, tree expr, tree stmts)
}
temp = pretemp;
add_referenced_tmp_var (temp);
add_referenced_var (temp);
if (TREE_CODE (TREE_TYPE (expr)) == COMPLEX_TYPE)
DECL_COMPLEX_GIMPLE_REG_P (temp) = 1;
@ -2565,7 +2565,7 @@ insert_into_preds_of_block (basic_block block, value_set_node_t node,
}
temp = prephitemp;
add_referenced_tmp_var (temp);
add_referenced_var (temp);
if (TREE_CODE (type) == COMPLEX_TYPE)
DECL_COMPLEX_GIMPLE_REG_P (temp) = 1;
@ -3040,7 +3040,7 @@ insert_extra_phis (basic_block block, basic_block dom)
fprintf (dump_file, " to merge available but not dominating values ");
}
add_referenced_tmp_var (temp);
add_referenced_var (temp);
temp = create_phi_node (temp, block);
NECESSARY (temp) = 0;
VEC_safe_push (tree, heap, inserted_exprs, temp);
@ -3288,7 +3288,7 @@ realify_fake_stores (void)
tree newstmt;
/* Mark the temp variable as referenced */
add_referenced_tmp_var (SSA_NAME_VAR (TREE_OPERAND (stmt, 0)));
add_referenced_var (SSA_NAME_VAR (TREE_OPERAND (stmt, 0)));
/* Put the new statement in GC memory, fix up the
SSA_NAME_DEF_STMT on it, and then put it in place of

View File

@ -2560,7 +2560,7 @@ get_constraint_for (tree t, VEC (ce_s, heap) **results)
heapvar = create_tmp_var_raw (ptr_type_node, "HEAP");
DECL_EXTERNAL (heapvar) = 1;
if (referenced_vars)
add_referenced_tmp_var (heapvar);
add_referenced_var (heapvar);
heapvar_insert (t, heapvar);
}
@ -4074,7 +4074,7 @@ intra_create_variable_infos (void)
"PARM_NOALIAS");
DECL_EXTERNAL (heapvar) = 1;
if (referenced_vars)
add_referenced_tmp_var (heapvar);
add_referenced_var (heapvar);
heapvar_insert (t, heapvar);
}
id = create_variable_info_for (heapvar,

View File

@ -562,7 +562,7 @@ adjust_accumulator_values (block_stmt_iterator bsi, tree m, tree a, edge back)
build2 (MULT_EXPR, ret_type, m_acc, a));
tmp = create_tmp_var (ret_type, "acc_tmp");
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
var = make_ssa_name (tmp, stmt);
TREE_OPERAND (stmt, 0) = var;
@ -641,7 +641,7 @@ adjust_return_value (basic_block bb, tree m, tree a)
build2 (MULT_EXPR, ret_type, m_acc, ret_var));
tmp = create_tmp_var (ret_type, "acc_tmp");
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
var = make_ssa_name (tmp, stmt);
TREE_OPERAND (stmt, 0) = var;
@ -656,7 +656,7 @@ adjust_return_value (basic_block bb, tree m, tree a)
build2 (PLUS_EXPR, ret_type, a_acc, var));
tmp = create_tmp_var (ret_type, "acc_tmp");
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
var = make_ssa_name (tmp, stmt);
TREE_OPERAND (stmt, 0) = var;
@ -928,7 +928,7 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls)
ret_type = TREE_TYPE (DECL_RESULT (current_function_decl));
tmp = create_tmp_var (ret_type, "add_acc");
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
phi = create_phi_node (tmp, first);
add_phi_arg (phi,
@ -944,7 +944,7 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls)
ret_type = TREE_TYPE (DECL_RESULT (current_function_decl));
tmp = create_tmp_var (ret_type, "mult_acc");
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
phi = create_phi_node (tmp, first);
add_phi_arg (phi,

View File

@ -516,7 +516,7 @@ vect_pattern_recog_1 (
code = TREE_CODE (pattern_expr);
pattern_type = TREE_TYPE (pattern_expr);
var = create_tmp_var (pattern_type, "patt");
add_referenced_tmp_var (var);
add_referenced_var (var);
var_name = make_ssa_name (var, NULL_TREE);
pattern_expr = build2 (MODIFY_EXPR, void_type_node, var_name, pattern_expr);
SSA_NAME_DEF_STMT (var_name) = pattern_expr;

View File

@ -153,14 +153,14 @@ vect_create_addr_base_for_vector_ref (tree stmt,
/* Create base_offset */
base_offset = size_binop (PLUS_EXPR, base_offset, init);
dest = create_tmp_var (TREE_TYPE (base_offset), "base_off");
add_referenced_tmp_var (dest);
add_referenced_var (dest);
base_offset = force_gimple_operand (base_offset, &new_stmt, false, dest);
append_to_statement_list_force (new_stmt, new_stmt_list);
if (offset)
{
tree tmp = create_tmp_var (TREE_TYPE (base_offset), "offset");
add_referenced_tmp_var (tmp);
add_referenced_var (tmp);
offset = fold_build2 (MULT_EXPR, TREE_TYPE (offset), offset,
DR_STEP (dr));
base_offset = fold_build2 (PLUS_EXPR, TREE_TYPE (base_offset),
@ -176,7 +176,7 @@ vect_create_addr_base_for_vector_ref (tree stmt,
/* addr_expr = addr_base */
addr_expr = vect_get_new_vect_var (scalar_ptr_type, vect_pointer_var,
get_name (base_name));
add_referenced_tmp_var (addr_expr);
add_referenced_var (addr_expr);
vec_stmt = build2 (MODIFY_EXPR, void_type_node, addr_expr, addr_base);
new_temp = make_ssa_name (addr_expr, vec_stmt);
TREE_OPERAND (vec_stmt, 0) = new_temp;
@ -291,7 +291,7 @@ vect_create_data_ref_ptr (tree stmt,
vect_ptr_type = build_pointer_type (vectype);
vect_ptr = vect_get_new_vect_var (vect_ptr_type, vect_pointer_var,
get_name (base_name));
add_referenced_tmp_var (vect_ptr);
add_referenced_var (vect_ptr);
/** (2) Add aliasing information to the new vector-pointer:
@ -389,7 +389,7 @@ vect_create_destination_var (tree scalar_dest, tree vectype)
if (!new_name)
new_name = "var_";
vec_dest = vect_get_new_vect_var (type, vect_simple_var, new_name);
add_referenced_tmp_var (vec_dest);
add_referenced_var (vec_dest);
return vec_dest;
}
@ -416,7 +416,7 @@ vect_init_vector (tree stmt, tree vector_var)
basic_block new_bb;
new_var = vect_get_new_vect_var (vectype, vect_simple_var, "cst_");
add_referenced_tmp_var (new_var);
add_referenced_var (new_var);
init_stmt = build2 (MODIFY_EXPR, vectype, new_var, vector_var);
new_temp = make_ssa_name (new_var, init_stmt);
@ -2291,7 +2291,7 @@ vect_build_loop_niters (loop_vec_info loop_vinfo)
tree ni = unshare_expr (LOOP_VINFO_NITERS (loop_vinfo));
var = create_tmp_var (TREE_TYPE (ni), "niters");
add_referenced_tmp_var (var);
add_referenced_var (var);
ni_name = force_gimple_operand (ni, &stmt, false, var);
pe = loop_preheader_edge (loop);
@ -2342,7 +2342,7 @@ vect_generate_tmps_on_preheader (loop_vec_info loop_vinfo,
/* Create: ratio = ni >> log2(vf) */
var = create_tmp_var (TREE_TYPE (ni), "bnd");
add_referenced_tmp_var (var);
add_referenced_var (var);
ratio_name = make_ssa_name (var, NULL_TREE);
stmt = build2 (MODIFY_EXPR, void_type_node, ratio_name,
build2 (RSHIFT_EXPR, TREE_TYPE (ni_name), ni_name, log_vf));
@ -2355,7 +2355,7 @@ vect_generate_tmps_on_preheader (loop_vec_info loop_vinfo,
/* Create: ratio_mult_vf = ratio << log2 (vf). */
var = create_tmp_var (TREE_TYPE (ni), "ratio_mult_vf");
add_referenced_tmp_var (var);
add_referenced_var (var);
ratio_mult_vf_name = make_ssa_name (var, NULL_TREE);
stmt = build2 (MODIFY_EXPR, void_type_node, ratio_mult_vf_name,
build2 (LSHIFT_EXPR, TREE_TYPE (ratio_name), ratio_name, log_vf));
@ -2556,7 +2556,7 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters,
niters, step_expr), init_expr);
var = create_tmp_var (TREE_TYPE (init_expr), "tmp");
add_referenced_tmp_var (var);
add_referenced_var (var);
ni_name = force_gimple_operand (ni, &stmt, false, var);
@ -2732,7 +2732,7 @@ vect_gen_niters_for_prolog_loop (loop_vec_info loop_vinfo, tree loop_niters)
}
var = create_tmp_var (niters_type, "prolog_loop_niters");
add_referenced_tmp_var (var);
add_referenced_var (var);
iters_name = force_gimple_operand (iters, &stmt, false, var);
/* Insert stmt on loop preheader edge. */
@ -2905,7 +2905,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
sprintf (tmp_name, "%s%d", "addr2int", i);
addr_tmp = create_tmp_var (int_ptrsize_type, tmp_name);
add_referenced_tmp_var (addr_tmp);
add_referenced_var (addr_tmp);
addr_tmp_name = make_ssa_name (addr_tmp, NULL_TREE);
addr_stmt = fold_convert (int_ptrsize_type, addr_base);
addr_stmt = build2 (MODIFY_EXPR, void_type_node,
@ -2920,7 +2920,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
/* create: or_tmp = or_tmp | addr_tmp */
sprintf (tmp_name, "%s%d", "orptrs", i);
or_tmp = create_tmp_var (int_ptrsize_type, tmp_name);
add_referenced_tmp_var (or_tmp);
add_referenced_var (or_tmp);
new_or_tmp_name = make_ssa_name (or_tmp, NULL_TREE);
or_stmt = build2 (MODIFY_EXPR, void_type_node, new_or_tmp_name,
build2 (BIT_IOR_EXPR, int_ptrsize_type,
@ -2939,7 +2939,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
/* create: and_tmp = or_tmp & mask */
and_tmp = create_tmp_var (int_ptrsize_type, "andmask" );
add_referenced_tmp_var (and_tmp);
add_referenced_var (and_tmp);
and_tmp_name = make_ssa_name (and_tmp, NULL_TREE);
and_stmt = build2 (MODIFY_EXPR, void_type_node,