mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-25 12:41:01 +08:00
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:
parent
dcdf969d4b
commit
f004ab022e
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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 *);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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),
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user