@@ -1,3 +1,114 @@
+2014-10-30 David Malcolm <dmalcolm@redhat.com>
+
+ * asan.c (build_shadow_mem_access): Strengthen local "g" from
+ gimple to gassign *.
+ (maybe_create_ssa_name): Likewise.
+ (maybe_cast_to_ptrmode): Likewise.
+ (instrument_mem_region_access): Likewise.
+ * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise
+ for local "set_stmt".
+ * cgraphunit.c (cgraph_node::expand_thunk): Likewise for locals
+ "stmt".
+ * gimple-fold.c (gimplify_and_update_call_from_tree): Likewise for
+ local "new_stmt".
+ (gimple_fold_builtin_memory_op): Likewise for both "new_stmt" and
+ for locals "repl".
+ (gimple_fold_builtin_memset): Likewise for "store".
+ (gimple_fold_builtin_memset): Likewise for "asgn".
+ * gimple-match-head.c (maybe_push_res_to_seq): Likewise for
+ "new_stmt".
+ * gimplify.c (gimplify_bind_expr): Likewise for "clobber_stmt".
+ * graphite-sese-to-poly.c (rewrite_cross_bb_scalar_dependence):
+ Likewise for "name_stmt".
+ * ipa-prop.c (ipa_modify_call_arguments): Likewise. for "tem".
+ * ipa-split.c (split_function): Likewise for "cpy".
+ * predict.c (pass_strip_predict_hints::execute): Likewise for
+ "ass_stmt".
+ * trans-mem.c (tm_log_emit_saves): Likewise for "stmt".
+ (tm_log_emit_restores): Likewise.
+ (build_tm_load): Likewise for "g".
+ (build_tm_store): Likewise.
+ * tree-call-cdce.c (gen_conditions_for_pow_int_base): Likewise for
+ "stmt1". Strengthen local "stmt2" from gimple to gcond *.
+ * tree-cfg.c (make_blocks): Strengthen local "s" from gimple to
+ gassign *.
+ (handle_abnormal_edges): Likewise for "assignment".
+ * tree-emutls.c (lower_emutls_1): Likewise for "x".
+ * tree-if-conv.c (ifc_temp_var): Likewise for "stmt".
+ (convert_scalar_cond_reduction): Likewise for "new_assign".
+ (predicate_scalar_phi): Likewise for "new_stmt".
+ * tree-inline.c (remap_ssa_name): Likewise for "init_stmt".
+ (copy_bb): Likewise for "new_stmt".
+ (setup_one_parameter): Likewise for "init_stmt".
+ * tree-loop-distribution.c (generate_memset_builtin): Likewise for
+ "cstmt".
+ * tree-nested.c (init_tmp_var): Likewise for "stmt".
+ (save_tmp_var): Likewise.
+ * tree-parloops.c (create_loads_for_reductions): Likewise.
+ (create_final_loads_for_reduction): Likewise.
+ (create_stores_for_reduction): Likewise.
+ (create_loads_and_stores_for_name): Likewise.
+ * tree-ssa-dse.c (dse_optimize_stmt): Likewise for "new_stmt".
+ * tree-ssa-forwprop.c (associate_pointerplus): Likewise for
+ "ostmt".
+ * tree-ssa-loop-im.c (sm_set_flag_if_changed::operator): Likewise
+ for "stmt".
+ * tree-ssa-math-opts.c (execute_cse_sincos_1): Eliminate local
+ "stmt", splitting its users into new local gcall * "call_stmt"
+ and gassign * "assign_stmt".
+ (build_and_insert_ref): Strengthen local "stmt" from gimple to
+ gassign *.
+ (bswap_replace): Likewise for "load_stmt", "addr_stmt",
+ "convert_stmt".
+ * tree-ssa-phiopt.c (neg_replacement): Likewise for "new_stmt".
+ * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
+ Likewise for "stmt".
+ * tree-ssa-reassoc.c (optimize_range_tests_to_bit_test): Likewise
+ for "g".
+ * tree-ssa-strlen.c (get_string_length): ELiminate local
+ "lenstmt", splitting its users into new local gcall * "call_stmt"
+ and gassign * "assign_stmt".
+ (handle_builtin_memset): Strengthen local "assign" from gimple to
+ gassign *.
+ * tree-switch-conversion.c (build_one_array): Likewise for "load".
+ (build_arrays): Likewise for "stmt".
+ * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise for
+ "vec_stmt".
+ (vect_permute_store_chain): Likewise for "perm_stmt".
+ (vect_permute_load_chain): Likewise.
+ (vect_shift_permute_load_chain): Likewise.
+ * tree-vect-generic.c (expand_vector_divmod): Likewise for "stmt".
+ (vector_element): Likewise for "asgn".
+ * tree-vect-loop-manip.c (vect_create_cond_for_align_checks):
+ Likewise for "and_stmt".
+ (vect_create_cond_for_align_checks): Likewise for "addr_stmt" and
+ "or_stmt".
+ * tree-vect-loop.c (vect_is_simple_reduction_1): Likewise for
+ "negate_stmt".
+ (get_initial_def_for_induction): Likewise for "init_stmt" and
+ "new_stmt".
+ (vectorizable_reduction): Likewise for "new_stmt".
+ * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise for
+ "pattern_stmt".
+ (vect_recog_sad_pattern): Likewise.
+ (vect_recog_widen_mult_pattern): Likewise for "new_stmt",
+ "pattern_stmt".
+ (vect_recog_widen_sum_pattern): Likewise for "pattern_stmt".
+ (vect_recog_over_widening_pattern): Likewise.
+ (vect_recog_widen_shift_pattern): Likewise.
+ * tree-vect-slp.c (vect_get_constant_vectors): Likewise for
+ "init_stmt".
+ (vect_create_mask_and_perm): Likewise for "perm_stmt".
+ (vect_schedule_slp_instance): Likewise for "new_stmt".
+ * tree-vect-stmts.c (read_vector_array): Likewise.
+ (write_vector_array): Likewise.
+ (vect_init_vector): Likewise for "init_stmt".
+ (vectorizable_call): Likewise.
+ * tree-vrp.c (simplify_internal_call_using_ranges): Likewise for
+ "g".
+ * tsan.c (instrument_expr): Split local gimple "g" into more
+ tightly-scoped locals, two of type gassign *, one of gcall *.
+
2014-10-29 David Malcolm <dmalcolm@redhat.com>
* coretypes.h (struct gpredict): Add forward declaration.
@@ -1523,7 +1523,7 @@ build_shadow_mem_access (gimple_stmt_iterator *gsi, location_t location,
{
tree t, uintptr_type = TREE_TYPE (base_addr);
tree shadow_type = TREE_TYPE (shadow_ptr_type);
- gimple g;
+ gassign *g;
t = build_int_cst (uintptr_type, ASAN_SHADOW_SHIFT);
g = gimple_build_assign_with_ops (RSHIFT_EXPR,
@@ -1564,7 +1564,7 @@ maybe_create_ssa_name (location_t loc, tree base, gimple_stmt_iterator *iter,
{
if (TREE_CODE (base) == SSA_NAME)
return base;
- gimple g
+ gassign *g
= gimple_build_assign_with_ops (TREE_CODE (base),
make_ssa_name (TREE_TYPE (base), NULL),
base, NULL_TREE);
@@ -1585,7 +1585,7 @@ maybe_cast_to_ptrmode (location_t loc, tree len, gimple_stmt_iterator *iter,
{
if (ptrofftype_p (len))
return len;
- gimple g
+ gassign *g
= gimple_build_assign_with_ops (NOP_EXPR,
make_ssa_name (pointer_sized_int_node, NULL),
len, NULL);
@@ -1854,7 +1854,7 @@ instrument_mem_region_access (tree base, tree len,
static bool
instrument_strlen_call (gimple_stmt_iterator *iter)
{
- gimple g;
+ gassign *g;
gcall *call = as_a <gcall *> (gsi_stmt (*iter));
gcc_assert (is_gimple_call (call));
@@ -1410,7 +1410,7 @@ cgraph_edge::redirect_call_stmt_to_callee (void)
TREE_TYPE (lhs), NULL);
var = get_or_create_ssa_default_def
(DECL_STRUCT_FUNCTION (e->caller->decl), var);
- gimple set_stmt = gimple_build_assign (lhs, var);
+ gassign *set_stmt = gimple_build_assign (lhs, var);
gsi = gsi_for_stmt (new_stmt);
gsi_insert_before_without_update (&gsi, set_stmt, GSI_SAME_STMT);
update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), set_stmt);
@@ -1569,7 +1569,7 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
{
tmp = create_tmp_reg (TYPE_MAIN_VARIANT
(TREE_TYPE (arg)), "arg");
- gimple stmt = gimple_build_assign (tmp, arg);
+ gassign *stmt = gimple_build_assign (tmp, arg);
gsi_insert_after (&bsi, stmt, GSI_NEW_STMT);
}
vargs.quick_push (tmp);
@@ -1622,7 +1622,7 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
fixed_offset, virtual_offset);
if (true_label)
{
- gimple stmt;
+ gassign *stmt;
bsi = gsi_last_bb (else_bb);
stmt = gimple_build_assign (restmp,
build_zero_cst (TREE_TYPE (restmp)));
@@ -665,7 +665,8 @@ void
gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
{
tree lhs;
- gimple stmt, new_stmt;
+ gimple stmt;
+ gassign *new_stmt;
gimple_stmt_iterator i;
gimple_seq stmts = NULL;
@@ -865,7 +866,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
srcmem = NULL_TREE;
if (srcmem)
{
- gimple new_stmt;
+ gassign *new_stmt;
if (is_gimple_reg_type (TREE_TYPE (srcmem)))
{
new_stmt = gimple_build_assign (NULL_TREE, srcmem);
@@ -1152,7 +1153,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
}
}
- gimple new_stmt;
+ gassign *new_stmt;
if (is_gimple_reg_type (TREE_TYPE (srcvar)))
{
new_stmt = gimple_build_assign (NULL_TREE, srcvar);
@@ -1189,7 +1190,7 @@ done:
dest = force_gimple_operand_gsi (gsi, dest, false, NULL_TREE, true,
GSI_SAME_STMT);
- gimple repl = gimple_build_assign (lhs, dest);
+ gassign *repl = gimple_build_assign (lhs, dest);
gsi_replace (gsi, repl, true);
return true;
}
@@ -1260,7 +1261,7 @@ gimple_fold_builtin_memset (gimple_stmt_iterator *gsi, tree c, tree len)
}
var = fold_build2 (MEM_REF, etype, dest, build_int_cst (ptr_type_node, 0));
- gimple store = gimple_build_assign (var, build_int_cst_type (etype, cval));
+ gassign *store = gimple_build_assign (var, build_int_cst_type (etype, cval));
gimple_set_vuse (store, gimple_vuse (stmt));
tree vdef = gimple_vdef (stmt);
if (vdef && TREE_CODE (vdef) == SSA_NAME)
@@ -1271,7 +1272,7 @@ gimple_fold_builtin_memset (gimple_stmt_iterator *gsi, tree c, tree len)
gsi_insert_before (gsi, store, GSI_SAME_STMT);
if (gimple_call_lhs (stmt))
{
- gimple asgn = gimple_build_assign (gimple_call_lhs (stmt), dest);
+ gassign *asgn = gimple_build_assign (gimple_call_lhs (stmt), dest);
gsi_replace (gsi, asgn, true);
}
else
@@ -333,8 +333,8 @@ maybe_push_res_to_seq (code_helper rcode, tree type, tree *ops,
if (!res)
res = make_ssa_name (type, NULL);
maybe_build_generic_op (rcode, type, &ops[0], ops[1], ops[2]);
- gimple new_stmt = gimple_build_assign_with_ops (rcode, res,
- ops[0], ops[1], ops[2]);
+ gassign *new_stmt = gimple_build_assign_with_ops (rcode, res,
+ ops[0], ops[1], ops[2]);
gimple_seq_add_stmt_without_update (seq, new_stmt);
return res;
}
@@ -1151,7 +1151,7 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pre_p)
&& flag_stack_reuse != SR_NONE)
{
tree clobber = build_constructor (TREE_TYPE (t), NULL);
- gimple clobber_stmt;
+ gassign *clobber_stmt;
TREE_THIS_VOLATILE (clobber) = 1;
clobber_stmt = gimple_build_assign (t, clobber);
gimple_set_location (clobber_stmt, end_locus);
@@ -2345,7 +2345,7 @@ static void
rewrite_cross_bb_scalar_dependence (scop_p scop, tree zero_dim_array,
tree def, gimple use_stmt)
{
- gimple name_stmt;
+ gassign *name_stmt;
tree name;
ssa_op_iter iter;
use_operand_p use_p;
@@ -4300,7 +4300,7 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gcall *stmt,
a load into a temporary. */
if (is_gimple_reg_type (TREE_TYPE (expr)))
{
- gimple tem = gimple_build_assign (NULL_TREE, expr);
+ gassign *tem = gimple_build_assign (NULL_TREE, expr);
if (gimple_in_ssa_p (cfun))
{
gimple_set_vuse (tem, gimple_vuse (stmt));
@@ -1492,7 +1492,7 @@ split_function (struct split_point *split_point)
gsi_insert_after (&gsi, call, GSI_NEW_STMT);
if (!useless_type_conversion_p (TREE_TYPE (retval), restype))
{
- gimple cpy;
+ gassign *cpy;
tree tem = create_tmp_reg (restype, NULL);
tem = make_ssa_name (tem, call);
cpy = gimple_build_assign_with_ops (NOP_EXPR, retval,
@@ -3123,7 +3123,7 @@ unsigned int
pass_strip_predict_hints::execute (function *fun)
{
basic_block bb;
- gimple ass_stmt;
+ gassign *ass_stmt;
tree var;
FOR_EACH_BB_FN (bb, fun)
@@ -1281,7 +1281,7 @@ tm_log_emit_saves (basic_block entry_block, basic_block bb)
{
size_t i;
gimple_stmt_iterator gsi = gsi_last_bb (bb);
- gimple stmt;
+ gassign *stmt;
struct tm_log_entry l, *lp;
for (i = 0; i < tm_log_save_addresses.length (); ++i)
@@ -1318,7 +1318,7 @@ tm_log_emit_restores (basic_block entry_block, basic_block bb)
int i;
struct tm_log_entry l, *lp;
gimple_stmt_iterator gsi;
- gimple stmt;
+ gassign *stmt;
for (i = tm_log_save_addresses.length () - 1; i >= 0; i--)
{
@@ -2169,7 +2169,7 @@ build_tm_load (location_t loc, tree lhs, tree rhs, gimple_stmt_iterator *gsi)
}
else
{
- gimple g;
+ gassign *g;
tree temp;
temp = create_tmp_reg (t, NULL);
@@ -2247,7 +2247,7 @@ build_tm_store (location_t loc, tree lhs, tree rhs, gimple_stmt_iterator *gsi)
}
else if (!useless_type_conversion_p (simple_type, type))
{
- gimple g;
+ gassign *g;
tree temp;
temp = create_tmp_reg (simple_type, NULL);
@@ -468,7 +468,8 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
tree int_type;
tree temp, tempn;
tree cst0;
- gimple stmt1, stmt2;
+ gassign *stmt1;
+ gcond *stmt2;
int bit_sz, max_exp;
inp_domain exp_domain;
@@ -527,7 +527,7 @@ make_blocks (gimple_seq seq)
{
tree lhs = gimple_get_lhs (stmt);
tree tmp = create_tmp_var (TREE_TYPE (lhs), NULL);
- gimple s = gimple_build_assign (lhs, tmp);
+ gassign *s = gimple_build_assign (lhs, tmp);
gimple_set_location (s, gimple_location (stmt));
gimple_set_block (s, gimple_block (stmt));
gimple_set_lhs (stmt, tmp);
@@ -739,7 +739,7 @@ handle_abnormal_edges (basic_block *dispatcher_bbs,
gcc_assert (computed_goto_p (last));
/* Copy the original computed goto's destination into VAR. */
- gimple assignment
+ gassign *assignment
= gimple_build_assign (var, gimple_goto_dest (last));
gsi_insert_before (&gsi, assignment, GSI_SAME_STMT);
@@ -489,7 +489,7 @@ lower_emutls_1 (tree *ptr, int *walk_subtrees, void *cb_data)
new assignment statement, and substitute yet another SSA_NAME. */
if (wi->changed)
{
- gimple x;
+ gassign *x;
addr = create_tmp_var (TREE_TYPE (t), NULL);
x = gimple_build_assign (addr, t);
@@ -261,7 +261,7 @@ static tree
ifc_temp_var (tree type, tree expr, gimple_stmt_iterator *gsi)
{
tree new_name = make_temp_ssa_name (type, NULL, "_ifc_");
- gimple stmt = gimple_build_assign (new_name, expr);
+ gassign *stmt = gimple_build_assign (new_name, expr);
gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
return new_name;
}
@@ -1523,7 +1523,7 @@ convert_scalar_cond_reduction (gimple reduc, gimple_stmt_iterator *gsi,
tree cond, tree op0, tree op1, bool swap)
{
gimple_stmt_iterator stmt_it;
- gimple new_assign;
+ gassign *new_assign;
tree rhs;
tree rhs1 = gimple_assign_rhs1 (reduc);
tree tmp = make_temp_ssa_name (TREE_TYPE (rhs1), NULL, "_ifc_");
@@ -1575,7 +1575,7 @@ predicate_scalar_phi (gphi *phi, tree cond,
basic_block true_bb,
gimple_stmt_iterator *gsi)
{
- gimple new_stmt;
+ gassign *new_stmt;
basic_block bb;
tree rhs, res, arg, scev;
@@ -319,7 +319,7 @@ remap_ssa_name (tree name, copy_body_data *id)
|| EDGE_COUNT (id->entry_bb->preds) != 1))
{
gimple_stmt_iterator gsi = gsi_last_bb (id->entry_bb);
- gimple init_stmt;
+ gassign *init_stmt;
tree zero = build_zero_cst (TREE_TYPE (new_tree));
init_stmt = gimple_build_assign (new_tree, zero);
@@ -1827,7 +1827,7 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
the number of anonymous arguments. */
size_t nargs = gimple_call_num_args (id->call_stmt);
tree count, p;
- gimple new_stmt;
+ gassign *new_stmt;
for (p = DECL_ARGUMENTS (id->src_fn); p; p = DECL_CHAIN (p))
nargs--;
@@ -2951,7 +2951,7 @@ static gimple
setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn,
basic_block bb, tree *vars)
{
- gimple init_stmt = NULL;
+ gassign *init_stmt = NULL;
tree var;
tree rhs = value;
tree def = (gimple_in_ssa_p (cfun)
@@ -822,7 +822,7 @@ generate_memset_builtin (struct loop *loop, partition_t partition)
val = fold_convert (integer_type_node, val);
else if (!useless_type_conversion_p (integer_type_node, TREE_TYPE (val)))
{
- gimple cstmt;
+ gassign *cstmt;
tree tem = make_ssa_name (integer_type_node, NULL);
cstmt = gimple_build_assign_with_ops (NOP_EXPR, tem, val, NULL_TREE);
gsi_insert_after (&gsi, cstmt, GSI_CONTINUE_LINKING);
@@ -436,7 +436,7 @@ static tree
init_tmp_var (struct nesting_info *info, tree exp, gimple_stmt_iterator *gsi)
{
tree t;
- gimple stmt;
+ gassign *stmt;
t = create_tmp_var_for (info, TREE_TYPE (exp), NULL);
stmt = gimple_build_assign (t, exp);
@@ -467,7 +467,7 @@ static tree
save_tmp_var (struct nesting_info *info, tree exp, gimple_stmt_iterator *gsi)
{
tree t;
- gimple stmt;
+ gassign *stmt;
t = create_tmp_var_for (info, TREE_TYPE (exp), NULL);
stmt = gimple_build_assign (exp, t);
@@ -1152,7 +1152,7 @@ int
create_loads_for_reductions (reduction_info **slot, struct clsn_data *clsn_data)
{
struct reduction_info *const red = *slot;
- gimple stmt;
+ gassign *stmt;
gimple_stmt_iterator gsi;
tree type = TREE_TYPE (gimple_assign_lhs (red->reduc_stmt));
tree load_struct;
@@ -1189,7 +1189,7 @@ create_final_loads_for_reduction (reduction_info_table_type *reduction_list,
{
gimple_stmt_iterator gsi;
tree t;
- gimple stmt;
+ gassign *stmt;
gsi = gsi_after_labels (ld_st_data->load_bb);
t = build_fold_addr_expr (ld_st_data->store);
@@ -1213,7 +1213,7 @@ create_stores_for_reduction (reduction_info **slot, struct clsn_data *clsn_data)
{
struct reduction_info *const red = *slot;
tree t;
- gimple stmt;
+ gassign *stmt;
gimple_stmt_iterator gsi;
tree type = TREE_TYPE (gimple_assign_lhs (red->reduc_stmt));
@@ -1235,7 +1235,7 @@ create_loads_and_stores_for_name (name_to_copy_elt **slot,
{
struct name_to_copy_elt *const elt = *slot;
tree t;
- gimple stmt;
+ gassign *stmt;
gimple_stmt_iterator gsi;
tree type = TREE_TYPE (elt->new_name);
tree load_struct;
@@ -266,7 +266,7 @@ dse_optimize_stmt (gimple_stmt_iterator *gsi)
tree lhs = gimple_call_lhs (stmt);
if (lhs)
{
- gimple new_stmt = gimple_build_assign (lhs, ptr);
+ gassign *new_stmt = gimple_build_assign (lhs, ptr);
unlink_stmt_vdef (stmt);
if (gsi_replace (gsi, new_stmt, true))
bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index);
@@ -2968,7 +2968,7 @@ associate_pointerplus (gimple_stmt_iterator *gsi)
return false;
tree off = make_ssa_name (TREE_TYPE (off1), NULL);
- gimple ostmt = gimple_build_assign_with_ops (PLUS_EXPR, off, off1, off2);
+ gassign *ostmt = gimple_build_assign_with_ops (PLUS_EXPR, off, off1, off2);
gsi_insert_before (gsi, ostmt, GSI_SAME_STMT);
gimple_assign_set_rhs_with_ops (gsi, POINTER_PLUS_EXPR, ptr, off);
@@ -1928,7 +1928,7 @@ sm_set_flag_if_changed::operator () (mem_ref_loc_p loc)
&& gimple_assign_lhs_ptr (loc->stmt) == loc->ref)
{
gimple_stmt_iterator gsi = gsi_for_stmt (loc->stmt);
- gimple stmt = gimple_build_assign (flag, boolean_true_node);
+ gassign *stmt = gimple_build_assign (flag, boolean_true_node);
gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
}
return false;
@@ -737,7 +737,8 @@ execute_cse_sincos_1 (tree name)
gimple_stmt_iterator gsi;
imm_use_iterator use_iter;
tree fndecl, res, type;
- gimple def_stmt, use_stmt, stmt;
+ gimple def_stmt, use_stmt;
+ gcall *call_stmt;
int seen_cos = 0, seen_sin = 0, seen_cexpi = 0;
vec<gimple> stmts = vNULL;
basic_block top_bb = NULL;
@@ -782,9 +783,10 @@ execute_cse_sincos_1 (tree name)
fndecl = mathfn_built_in (type, BUILT_IN_CEXPI);
if (!fndecl)
return false;
- stmt = gimple_build_call (fndecl, 1, name);
- res = make_temp_ssa_name (TREE_TYPE (TREE_TYPE (fndecl)), stmt, "sincostmp");
- gimple_call_set_lhs (stmt, res);
+ call_stmt = gimple_build_call (fndecl, 1, name);
+ res = make_temp_ssa_name (TREE_TYPE (TREE_TYPE (fndecl)), call_stmt,
+ "sincostmp");
+ gimple_call_set_lhs (call_stmt, res);
def_stmt = SSA_NAME_DEF_STMT (name);
if (!SSA_NAME_IS_DEFAULT_DEF (name)
@@ -792,12 +794,12 @@ execute_cse_sincos_1 (tree name)
&& gimple_bb (def_stmt) == top_bb)
{
gsi = gsi_for_stmt (def_stmt);
- gsi_insert_after (&gsi, stmt, GSI_SAME_STMT);
+ gsi_insert_after (&gsi, call_stmt, GSI_SAME_STMT);
}
else
{
gsi = gsi_after_labels (top_bb);
- gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
+ gsi_insert_before (&gsi, call_stmt, GSI_SAME_STMT);
}
sincos_stats.inserted++;
@@ -826,11 +828,12 @@ execute_cse_sincos_1 (tree name)
}
/* Replace call with a copy. */
- stmt = gimple_build_assign (gimple_call_lhs (use_stmt), rhs);
+ gassign *assign_stmt = gimple_build_assign (gimple_call_lhs (use_stmt),
+ rhs);
gsi = gsi_for_stmt (use_stmt);
- gsi_replace (&gsi, stmt, true);
- if (gimple_purge_dead_eh_edges (gimple_bb (stmt)))
+ gsi_replace (&gsi, assign_stmt, true);
+ if (gimple_purge_dead_eh_edges (gimple_bb (assign_stmt)))
cfg_changed = true;
}
@@ -1115,7 +1118,7 @@ build_and_insert_ref (gimple_stmt_iterator *gsi, location_t loc, tree type,
const char *name, enum tree_code code, tree arg0)
{
tree result = make_temp_ssa_name (type, NULL, name);
- gimple stmt = gimple_build_assign (result, build1 (code, type, arg0));
+ gassign *stmt = gimple_build_assign (result, build1 (code, type, arg0));
gimple_set_location (stmt, loc);
gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
return result;
@@ -2201,7 +2204,7 @@ bswap_replace (gimple cur_stmt, gimple_stmt_iterator gsi, gimple src_stmt,
gimple_stmt_iterator gsi_ins = gsi_for_stmt (src_stmt);
tree addr_expr, addr_tmp, val_expr, val_tmp;
tree load_offset_ptr, aligned_load_type;
- gimple addr_stmt, load_stmt;
+ gassign *load_stmt;
unsigned align;
align = get_object_alignment (src);
@@ -2222,7 +2225,7 @@ bswap_replace (gimple cur_stmt, gimple_stmt_iterator gsi, gimple src_stmt,
{
addr_tmp = make_temp_ssa_name (TREE_TYPE (addr_expr), NULL,
"load_src");
- addr_stmt = gimple_build_assign (addr_tmp, addr_expr);
+ gassign *addr_stmt = gimple_build_assign (addr_tmp, addr_expr);
gsi_insert_before (&gsi, addr_stmt, GSI_SAME_STMT);
}
@@ -2299,7 +2302,7 @@ bswap_replace (gimple cur_stmt, gimple_stmt_iterator gsi, gimple src_stmt,
/* Convert the src expression if necessary. */
if (!useless_type_conversion_p (TREE_TYPE (tmp), bswap_type))
{
- gimple convert_stmt;
+ gassign *convert_stmt;
tmp = make_temp_ssa_name (bswap_type, NULL, "bswapsrc");
convert_stmt = gimple_build_assign_with_ops (NOP_EXPR, tmp, src, NULL);
gsi_insert_before (&gsi, convert_stmt, GSI_SAME_STMT);
@@ -2312,7 +2315,7 @@ bswap_replace (gimple cur_stmt, gimple_stmt_iterator gsi, gimple src_stmt,
/* Convert the result if necessary. */
if (!useless_type_conversion_p (TREE_TYPE (tgt), bswap_type))
{
- gimple convert_stmt;
+ gassign *convert_stmt;
tmp = make_temp_ssa_name (bswap_type, NULL, "bswapdst");
convert_stmt = gimple_build_assign_with_ops (NOP_EXPR, tgt, tmp, NULL);
gsi_insert_after (&gsi, convert_stmt, GSI_SAME_STMT);
@@ -1301,7 +1301,8 @@ neg_replacement (basic_block cond_bb, basic_block middle_bb,
edge e0 ATTRIBUTE_UNUSED, edge e1,
gimple phi, tree arg0, tree arg1)
{
- gimple new_stmt, cond;
+ gassign *new_stmt;
+ gimple cond;
gimple_stmt_iterator gsi;
gimple assign;
edge true_edge, false_edge;
@@ -4020,7 +4020,7 @@ eliminate_dom_walker::before_dom_children (basic_block b)
if (!useless_type_conversion_p (TREE_TYPE (res), TREE_TYPE (sprime)))
sprime = fold_convert (TREE_TYPE (res), sprime);
- gimple stmt = gimple_build_assign (res, sprime);
+ gassign *stmt = gimple_build_assign (res, sprime);
/* ??? It cannot yet be necessary (DOM walk). */
gimple_set_plf (stmt, NECESSARY, gimple_plf (phi, NECESSARY));
@@ -2591,7 +2591,7 @@ optimize_range_tests_to_bit_test (enum tree_code opcode, int first, int length,
gimple_seq_add_seq_without_update (&seq, seq2);
gcc_assert (TREE_CODE (exp) == SSA_NAME);
gimple_set_visited (SSA_NAME_DEF_STMT (exp), true);
- gimple g
+ gassign *g
= gimple_build_assign_with_ops (BIT_IOR_EXPR,
make_ssa_name (optype, NULL),
tem, exp);
@@ -416,7 +416,9 @@ get_string_length (strinfo si)
if (si->stmt)
{
- gimple stmt = si->stmt, lenstmt;
+ gimple stmt = si->stmt;
+ gcall *call_stmt;
+ gassign *assign_stmt;
tree callee, lhs, fn, tem;
location_t loc;
gimple_stmt_iterator gsi;
@@ -440,11 +442,11 @@ get_string_length (strinfo si)
fn = builtin_decl_implicit (BUILT_IN_STRLEN);
gcc_assert (lhs == NULL_TREE);
tem = unshare_expr (gimple_call_arg (stmt, 0));
- lenstmt = gimple_build_call (fn, 1, tem);
- lhs = make_ssa_name (TREE_TYPE (TREE_TYPE (fn)), lenstmt);
- gimple_call_set_lhs (lenstmt, lhs);
- gimple_set_vuse (lenstmt, gimple_vuse (stmt));
- gsi_insert_before (&gsi, lenstmt, GSI_SAME_STMT);
+ call_stmt = gimple_build_call (fn, 1, tem);
+ lhs = make_ssa_name (TREE_TYPE (TREE_TYPE (fn)), call_stmt);
+ gimple_call_set_lhs (call_stmt, lhs);
+ gimple_set_vuse (call_stmt, gimple_vuse (stmt));
+ gsi_insert_before (&gsi, call_stmt, GSI_SAME_STMT);
tem = gimple_call_arg (stmt, 0);
if (!ptrofftype_p (TREE_TYPE (lhs)))
{
@@ -452,13 +454,13 @@ get_string_length (strinfo si)
lhs = force_gimple_operand_gsi (&gsi, lhs, true, NULL_TREE,
true, GSI_SAME_STMT);
}
- lenstmt
+ assign_stmt
= gimple_build_assign_with_ops
(POINTER_PLUS_EXPR,
make_ssa_name (TREE_TYPE (gimple_call_arg (stmt, 0)), NULL),
tem, lhs);
- gsi_insert_before (&gsi, lenstmt, GSI_SAME_STMT);
- gimple_call_set_arg (stmt, 0, gimple_assign_lhs (lenstmt));
+ gsi_insert_before (&gsi, assign_stmt, GSI_SAME_STMT);
+ gimple_call_set_arg (stmt, 0, gimple_assign_lhs (assign_stmt));
lhs = NULL_TREE;
/* FALLTHRU */
case BUILT_IN_STRCPY:
@@ -1673,7 +1675,7 @@ handle_builtin_memset (gimple_stmt_iterator *gsi)
unlink_stmt_vdef (stmt2);
if (lhs)
{
- gimple assign = gimple_build_assign (lhs, ptr);
+ gassign *assign = gimple_build_assign (lhs, ptr);
gsi_replace (gsi, assign, false);
}
else
@@ -1037,7 +1037,7 @@ build_one_array (gswitch *swtch, int num, tree arr_index_type,
gphi *phi, tree tidx, struct switch_conv_info *info)
{
tree name, cst;
- gimple load;
+ gassign *load;
gimple_stmt_iterator gsi = gsi_for_stmt (swtch);
location_t loc = gimple_location (swtch);
@@ -1103,7 +1103,7 @@ build_arrays (gswitch *swtch, struct switch_conv_info *info)
{
tree arr_index_type;
tree tidx, sub, utype;
- gimple stmt;
+ gassign *stmt;
gimple_stmt_iterator gsi;
gphi_iterator gpi;
int i;
@@ -4057,7 +4057,7 @@ vect_create_data_ref_ptr (gimple stmt, tree aggr_type, struct loop *at_loop,
tree aggr_ptr_type;
tree aggr_ptr;
tree new_temp;
- gimple vec_stmt;
+ gassign *vec_stmt;
gimple_seq new_stmt_list = NULL;
edge pe = NULL;
basic_block new_bb;
@@ -4591,7 +4591,7 @@ vect_permute_store_chain (vec<tree> dr_chain,
vec<tree> *result_chain)
{
tree vect1, vect2, high, low;
- gimple perm_stmt;
+ gassign *perm_stmt;
tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
tree perm_mask_low, perm_mask_high;
tree data_ref;
@@ -5164,7 +5164,7 @@ vect_permute_load_chain (vec<tree> dr_chain,
tree data_ref, first_vect, second_vect;
tree perm_mask_even, perm_mask_odd;
tree perm3_mask_low, perm3_mask_high;
- gimple perm_stmt;
+ gassign *perm_stmt;
tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
unsigned int i, j, log_length = exact_log2 (length);
unsigned nelt = TYPE_VECTOR_SUBPARTS (vectype);
@@ -5363,7 +5363,7 @@ vect_shift_permute_load_chain (vec<tree> dr_chain,
tree vect[3], vect_shift[3], data_ref, first_vect, second_vect;
tree perm2_mask1, perm2_mask2, perm3_mask;
tree select_mask, shift1_mask, shift2_mask, shift3_mask, shift4_mask;
- gimple perm_stmt;
+ gassign *perm_stmt;
tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
unsigned int i;
@@ -629,7 +629,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
&& expand_vec_cond_expr_p (type, type))
{
tree zero, cst, cond;
- gimple stmt;
+ gassign *stmt;
zero = build_zero_cst (type);
cond = build2 (LT_EXPR, type, op0, zero);
@@ -1136,7 +1136,7 @@ static tree
vector_element (gimple_stmt_iterator *gsi, tree vect, tree idx, tree *ptmpvec)
{
tree vect_type, vect_elt_type;
- gimple asgn;
+ gassign *asgn;
tree tmpvec;
tree arraytype;
bool need_asgn = true;
@@ -2121,7 +2121,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
char tmp_name[20];
tree or_tmp_name = NULL_TREE;
tree and_tmp_name;
- gimple and_stmt;
+ gassign *and_stmt;
tree ptrsize_zero;
tree part_cond_expr;
@@ -2140,7 +2140,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
tree addr_base;
tree addr_tmp_name;
tree new_or_tmp_name;
- gimple addr_stmt, or_stmt;
+ gassign *addr_stmt, *or_stmt;
stmt_vec_info stmt_vinfo = vinfo_for_stmt (ref_stmt);
tree vectype = STMT_VINFO_VECTYPE (stmt_vinfo);
bool negative = tree_int_cst_compare
@@ -2502,8 +2502,8 @@ vect_is_simple_reduction_1 (loop_vec_info loop_info, gimple phi,
{
tree rhs = gimple_assign_rhs2 (def_stmt);
tree negrhs = make_ssa_name (TREE_TYPE (rhs), NULL);
- gimple negate_stmt = gimple_build_assign_with_ops (NEGATE_EXPR, negrhs,
- rhs, NULL);
+ gassign *negate_stmt = gimple_build_assign_with_ops (NEGATE_EXPR, negrhs,
+ rhs, NULL);
gimple_stmt_iterator gsi = gsi_for_stmt (def_stmt);
set_vinfo_for_stmt (negate_stmt, new_stmt_vec_info (negate_stmt,
loop_info, NULL));
@@ -3271,7 +3271,7 @@ get_initial_def_for_induction (gimple iv_phi)
tree new_vec, vec_init, vec_step, t;
tree new_var;
tree new_name;
- gimple init_stmt, new_stmt;
+ gassign *init_stmt, *new_stmt;
gphi *induction_phi;
tree induc_def, vec_def, vec_dest;
tree init_expr, step_expr;
@@ -4769,7 +4769,7 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
stmt_vec_info prev_stmt_info, prev_phi_info;
bool single_defuse_cycle = false;
tree reduc_def = NULL_TREE;
- gimple new_stmt = NULL;
+ gassign *new_stmt = NULL;
int j;
tree ops[3];
bool nested_cycle = false, found_nested_cycle_def = false;
@@ -286,7 +286,7 @@ vect_recog_dot_prod_pattern (vec<gimple> *stmts, tree *type_in,
tree oprnd00, oprnd01;
stmt_vec_info stmt_vinfo = vinfo_for_stmt (last_stmt);
tree type, half_type;
- gimple pattern_stmt;
+ gassign *pattern_stmt;
tree prod_type;
loop_vec_info loop_info = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
struct loop *loop;
@@ -672,8 +672,8 @@ vect_recog_sad_pattern (vec<gimple> *stmts, tree *type_in,
/* Pattern detected. Create a stmt to be used to replace the pattern: */
tree var = vect_recog_temp_ssa_var (sum_type, NULL);
- gimple pattern_stmt = gimple_build_assign_with_ops
- (SAD_EXPR, var, sad_oprnd0, sad_oprnd1, plus_oprnd1);
+ gassign *pattern_stmt = gimple_build_assign_with_ops (
+ SAD_EXPR, var, sad_oprnd0, sad_oprnd1, plus_oprnd1);
if (dump_enabled_p ())
{
@@ -856,7 +856,7 @@ vect_recog_widen_mult_pattern (vec<gimple> *stmts,
gimple def_stmt0, def_stmt1;
tree oprnd0, oprnd1;
tree type, half_type0, half_type1;
- gimple new_stmt = NULL, pattern_stmt = NULL;
+ gassign *new_stmt = NULL, *pattern_stmt = NULL;
tree vectype, vecitype;
tree var;
enum tree_code dummy_code;
@@ -1190,7 +1190,7 @@ vect_recog_widen_sum_pattern (vec<gimple> *stmts, tree *type_in,
tree oprnd0, oprnd1;
stmt_vec_info stmt_vinfo = vinfo_for_stmt (last_stmt);
tree type, half_type;
- gimple pattern_stmt;
+ gassign *pattern_stmt;
loop_vec_info loop_info = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
struct loop *loop;
tree var;
@@ -1504,7 +1504,8 @@ vect_recog_over_widening_pattern (vec<gimple> *stmts,
tree *type_in, tree *type_out)
{
gimple stmt = stmts->pop ();
- gimple pattern_stmt = NULL, new_def_stmt, prev_stmt = NULL, use_stmt = NULL;
+ gassign *pattern_stmt = NULL;
+ gimple new_def_stmt, prev_stmt = NULL, use_stmt = NULL;
tree op0, op1, vectype = NULL_TREE, use_lhs, use_type;
tree var = NULL_TREE, new_type = NULL_TREE, new_oprnd;
bool first;
@@ -1699,7 +1700,7 @@ vect_recog_widen_shift_pattern (vec<gimple> *stmts,
gimple def_stmt0;
tree oprnd0, oprnd1;
tree type, half_type0;
- gimple pattern_stmt;
+ gassign *pattern_stmt;
tree vectype, vectype_out = NULL_TREE;
tree var;
enum tree_code dummy_code;
@@ -2604,7 +2604,7 @@ vect_get_constant_vectors (tree op, slp_tree slp_node,
{
tree new_temp
= make_ssa_name (TREE_TYPE (vector_type), NULL);
- gimple init_stmt;
+ gassign *init_stmt;
op = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (vector_type),
op);
init_stmt
@@ -2813,7 +2813,7 @@ vect_create_mask_and_perm (gimple stmt, gimple next_scalar_stmt,
int ncopies, int vect_stmts_counter)
{
tree perm_dest;
- gimple perm_stmt = NULL;
+ gassign *perm_stmt = NULL;
stmt_vec_info next_stmt_info;
int i, stride;
tree first_vec, second_vec, data_ref;
@@ -3189,7 +3189,8 @@ vect_schedule_slp_instance (slp_tree node, slp_instance instance,
static void
vect_remove_slp_scalar_calls (slp_tree node)
{
- gimple stmt, new_stmt;
+ gimple stmt;
+ gassign *new_stmt;
gimple_stmt_iterator gsi;
int i;
slp_tree child;
@@ -150,7 +150,7 @@ read_vector_array (gimple stmt, gimple_stmt_iterator *gsi, tree scalar_dest,
tree array, unsigned HOST_WIDE_INT n)
{
tree vect_type, vect, vect_name, array_ref;
- gimple new_stmt;
+ gassign *new_stmt;
gcc_assert (TREE_CODE (TREE_TYPE (array)) == ARRAY_TYPE);
vect_type = TREE_TYPE (TREE_TYPE (array));
@@ -176,7 +176,7 @@ write_vector_array (gimple stmt, gimple_stmt_iterator *gsi, tree vect,
tree array, unsigned HOST_WIDE_INT n)
{
tree array_ref;
- gimple new_stmt;
+ gassign *new_stmt;
array_ref = build4 (ARRAY_REF, TREE_TYPE (vect), array,
build_int_cst (size_type_node, n),
@@ -1314,7 +1314,7 @@ tree
vect_init_vector (gimple stmt, tree val, tree type, gimple_stmt_iterator *gsi)
{
tree new_var;
- gimple init_stmt;
+ gassign *init_stmt;
tree vec_oprnd;
tree new_temp;
@@ -2465,7 +2465,7 @@ vectorizable_call (gimple gs, gimple_stmt_iterator *gsi, gimple *vec_stmt,
tree cst = build_vector (vectype_out, v);
tree new_var
= vect_get_new_vect_var (vectype_out, vect_simple_var, "cst_");
- gimple init_stmt = gimple_build_assign (new_var, cst);
+ gassign *init_stmt = gimple_build_assign (new_var, cst);
new_temp = make_ssa_name (new_var, init_stmt);
gimple_assign_set_lhs (init_stmt, new_temp);
vect_init_vector_1 (stmt, init_stmt, NULL);
@@ -9555,8 +9555,8 @@ simplify_internal_call_using_ranges (gimple_stmt_iterator *gsi, gimple stmt)
}
}
- gimple g = gimple_build_assign_with_ops (subcode, gimple_call_lhs (stmt),
- op0, op1);
+ gassign *g = gimple_build_assign_with_ops (subcode, gimple_call_lhs (stmt),
+ op0, op1);
gsi_replace (gsi, g, false);
return true;
}
@@ -115,7 +115,7 @@ instrument_expr (gimple_stmt_iterator gsi, tree expr, bool is_write)
tree base, rhs, expr_ptr, builtin_decl;
basic_block bb;
HOST_WIDE_INT size;
- gimple stmt, g;
+ gimple stmt;
gimple_seq seq;
location_t loc;
@@ -165,12 +165,13 @@ instrument_expr (gimple_stmt_iterator gsi, tree expr, bool is_write)
seq = NULL;
if (!is_gimple_val (expr_ptr))
{
- g = gimple_build_assign (make_ssa_name (TREE_TYPE (expr_ptr), NULL),
- expr_ptr);
+ gassign *g = gimple_build_assign (make_ssa_name (TREE_TYPE (expr_ptr), NULL),
+ expr_ptr);
expr_ptr = gimple_assign_lhs (g);
gimple_set_location (g, loc);
gimple_seq_add_stmt_without_update (&seq, g);
}
+ gcall *g;
if (rhs == NULL)
g = gimple_build_call (get_memory_access_decl (is_write, size),
1, expr_ptr);
@@ -443,7 +444,8 @@ static const struct tsan_map_atomic
static void
instrument_builtin_call (gimple_stmt_iterator *gsi)
{
- gimple stmt = gsi_stmt (*gsi), g;
+ gimple stmt = gsi_stmt (*gsi);
+ gassign *g;
tree callee = gimple_call_fndecl (stmt), last_arg, args[6], t, lhs;
enum built_in_function fcode = DECL_FUNCTION_CODE (callee);
unsigned int i, num = gimple_call_num_args (stmt), j;