/* Helper function called by vect_finish_replace_stmt and
vect_finish_stmt_generation. Set the location of the new
- statement and create a stmt_vec_info for it. */
+ statement and create and return a stmt_vec_info for it. */
-static void
+static stmt_vec_info
vect_finish_stmt_generation_1 (gimple *stmt, gimple *vec_stmt)
{
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
vec_info *vinfo = stmt_info->vinfo;
- vinfo->add_stmt (vec_stmt);
+ stmt_vec_info vec_stmt_info = vinfo->add_stmt (vec_stmt);
if (dump_enabled_p ())
{
int lp_nr = lookup_stmt_eh_lp (stmt);
if (lp_nr != 0 && stmt_could_throw_p (vec_stmt))
add_stmt_to_eh_lp (vec_stmt, lp_nr);
+
+ return vec_stmt_info;
}
/* Replace the scalar statement STMT with a new vector statement VEC_STMT,
- which sets the same scalar result as STMT did. */
+ which sets the same scalar result as STMT did. Create and return a
+ stmt_vec_info for VEC_STMT. */
-void
+stmt_vec_info
vect_finish_replace_stmt (gimple *stmt, gimple *vec_stmt)
{
gcc_assert (gimple_get_lhs (stmt) == gimple_get_lhs (vec_stmt));
gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
gsi_replace (&gsi, vec_stmt, false);
- vect_finish_stmt_generation_1 (stmt, vec_stmt);
+ return vect_finish_stmt_generation_1 (stmt, vec_stmt);
}
-/* Function vect_finish_stmt_generation.
+/* Add VEC_STMT to the vectorized implementation of STMT and insert it
+ before *GSI. Create and return a stmt_vec_info for VEC_STMT. */
- Insert a new stmt. */
-
-void
+stmt_vec_info
vect_finish_stmt_generation (gimple *stmt, gimple *vec_stmt,
gimple_stmt_iterator *gsi)
{
}
}
gsi_insert_before (gsi, vec_stmt, GSI_SAME_STMT);
- vect_finish_stmt_generation_1 (stmt, vec_stmt);
+ return vect_finish_stmt_generation_1 (stmt, vec_stmt);
}
/* We want to vectorize a call to combined function CFN with function
for (int j = 0; j < ncopies; ++j)
{
tree op, var;
- gimple *new_stmt;
if (modifier == WIDEN && (j & 1))
op = permute_vec_elements (vec_oprnd0, vec_oprnd0,
perm_mask, stmt, gsi);
TYPE_VECTOR_SUBPARTS (idxtype)));
var = vect_get_new_ssa_name (idxtype, vect_simple_var);
op = build1 (VIEW_CONVERT_EXPR, idxtype, op);
- new_stmt = gimple_build_assign (var, VIEW_CONVERT_EXPR, op);
+ gassign *new_stmt = gimple_build_assign (var, VIEW_CONVERT_EXPR, op);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
op = var;
}
TYPE_VECTOR_SUBPARTS (masktype)));
var = vect_get_new_ssa_name (masktype, vect_simple_var);
mask_op = build1 (VIEW_CONVERT_EXPR, masktype, mask_op);
- new_stmt = gimple_build_assign (var, VIEW_CONVERT_EXPR,
- mask_op);
+ gassign *new_stmt
+ = gimple_build_assign (var, VIEW_CONVERT_EXPR, mask_op);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
mask_op = var;
}
src_op = mask_op;
}
- new_stmt = gimple_build_call (gs_info->decl, 5, src_op, ptr, op,
- mask_op, scale);
+ gcall *new_call = gimple_build_call (gs_info->decl, 5, src_op, ptr, op,
+ mask_op, scale);
+ stmt_vec_info new_stmt_info;
if (!useless_type_conversion_p (vectype, rettype))
{
gcc_assert (known_eq (TYPE_VECTOR_SUBPARTS (vectype),
TYPE_VECTOR_SUBPARTS (rettype)));
op = vect_get_new_ssa_name (rettype, vect_simple_var);
- gimple_call_set_lhs (new_stmt, op);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ gimple_call_set_lhs (new_call, op);
+ vect_finish_stmt_generation (stmt, new_call, gsi);
var = make_ssa_name (vec_dest);
op = build1 (VIEW_CONVERT_EXPR, vectype, op);
- new_stmt = gimple_build_assign (var, VIEW_CONVERT_EXPR, op);
+ gassign *new_stmt = gimple_build_assign (var, VIEW_CONVERT_EXPR, op);
+ new_stmt_info = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
else
{
- var = make_ssa_name (vec_dest, new_stmt);
- gimple_call_set_lhs (new_stmt, var);
+ var = make_ssa_name (vec_dest, new_call);
+ gimple_call_set_lhs (new_call, var);
+ new_stmt_info = vect_finish_stmt_generation (stmt, new_call, gsi);
}
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
-
if (modifier == NARROW)
{
if ((j & 1) == 0)
continue;
}
var = permute_vec_elements (prev_res, var, perm_mask, stmt, gsi);
- new_stmt = SSA_NAME_DEF_STMT (var);
+ new_stmt_info = loop_vinfo->lookup_def (var);
}
if (prev_stmt_info == NULL_STMT_VEC_INFO)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
+ prev_stmt_info = new_stmt_info;
}
}
/* Transform. */
vec<tree> vec_oprnds = vNULL;
- gimple *new_stmt = NULL;
+ stmt_vec_info new_stmt_info = NULL;
stmt_vec_info prev_stmt_info = NULL;
for (unsigned j = 0; j < ncopies; j++)
{
tree vop;
FOR_EACH_VEC_ELT (vec_oprnds, i, vop)
{
+ gimple *new_stmt;
tree tem = make_ssa_name (char_vectype);
new_stmt = gimple_build_assign (tem, build1 (VIEW_CONVERT_EXPR,
char_vectype, vop));
tem = make_ssa_name (vectype);
new_stmt = gimple_build_assign (tem, build1 (VIEW_CONVERT_EXPR,
vectype, tem2));
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (slp_node)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
}
if (slp_node)
continue;
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ prev_stmt_info = new_stmt_info;
}
vec_oprnds.release ();
= { vect_unknown_def_type, vect_unknown_def_type, vect_unknown_def_type,
vect_unknown_def_type };
int ndts = ARRAY_SIZE (dt);
- gimple *new_stmt = NULL;
int ncopies, j;
auto_vec<tree, 8> vargs;
auto_vec<tree, 8> orig_vargs;
bool masked_loop_p = loop_vinfo && LOOP_VINFO_FULLY_MASKED_P (loop_vinfo);
+ stmt_vec_info new_stmt_info = NULL;
prev_stmt_info = NULL;
if (modifier == NONE || ifn != IFN_LAST)
{
= gimple_build_call_internal_vec (ifn, vargs);
gimple_call_set_lhs (call, half_res);
gimple_call_set_nothrow (call, true);
- new_stmt = call;
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, call, gsi);
if ((i & 1) == 0)
{
prev_res = half_res;
continue;
}
new_temp = make_ssa_name (vec_dest);
- new_stmt = gimple_build_assign (new_temp, convert_code,
- prev_res, half_res);
+ gimple *new_stmt
+ = gimple_build_assign (new_temp, convert_code,
+ prev_res, half_res);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
else
{
new_temp = make_ssa_name (vec_dest, call);
gimple_call_set_lhs (call, new_temp);
gimple_call_set_nothrow (call, true);
- new_stmt = call;
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, call, gsi);
}
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
}
for (i = 0; i < nargs; i++)
gimple *init_stmt = gimple_build_assign (new_var, cst);
vect_init_vector_1 (stmt, init_stmt, NULL);
new_temp = make_ssa_name (vec_dest);
- new_stmt = gimple_build_assign (new_temp, new_var);
+ gimple *new_stmt = gimple_build_assign (new_temp, new_var);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
else if (modifier == NARROW)
{
gcall *call = gimple_build_call_internal_vec (ifn, vargs);
gimple_call_set_lhs (call, half_res);
gimple_call_set_nothrow (call, true);
- new_stmt = call;
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info = vect_finish_stmt_generation (stmt, call, gsi);
if ((j & 1) == 0)
{
prev_res = half_res;
continue;
}
new_temp = make_ssa_name (vec_dest);
- new_stmt = gimple_build_assign (new_temp, convert_code,
- prev_res, half_res);
+ gassign *new_stmt = gimple_build_assign (new_temp, convert_code,
+ prev_res, half_res);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
else
{
call = gimple_build_call_internal_vec (ifn, vargs);
else
call = gimple_build_call_vec (fndecl, vargs);
- new_temp = make_ssa_name (vec_dest, new_stmt);
+ new_temp = make_ssa_name (vec_dest, call);
gimple_call_set_lhs (call, new_temp);
gimple_call_set_nothrow (call, true);
- new_stmt = call;
+ new_stmt_info = vect_finish_stmt_generation (stmt, call, gsi);
}
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (j == (modifier == NARROW ? 1 : 0))
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ prev_stmt_info = new_stmt_info;
}
}
else if (modifier == NARROW)
new_temp = make_ssa_name (vec_dest, call);
gimple_call_set_lhs (call, new_temp);
gimple_call_set_nothrow (call, true);
- new_stmt = call;
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, call, gsi);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
}
for (i = 0; i < nargs; i++)
}
else
{
- vec_oprnd1 = gimple_call_arg (new_stmt, 2*i + 1);
+ vec_oprnd1 = gimple_call_arg (new_stmt_info->stmt,
+ 2 * i + 1);
vec_oprnd0
= vect_get_vec_def_for_stmt_copy (dt[i], vec_oprnd1);
vec_oprnd1
vargs.quick_push (vec_oprnd1);
}
- new_stmt = gimple_build_call_vec (fndecl, vargs);
+ gcall *new_stmt = gimple_build_call_vec (fndecl, vargs);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_call_set_lhs (new_stmt, new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ prev_stmt_info = new_stmt_info;
}
*vec_stmt = STMT_VINFO_VEC_STMT (stmt_info);
stmt_info = vinfo_for_stmt (STMT_VINFO_RELATED_STMT (stmt_info));
lhs = gimple_get_lhs (stmt_info->stmt);
- new_stmt = gimple_build_assign (lhs, build_zero_cst (TREE_TYPE (lhs)));
+ gassign *new_stmt
+ = gimple_build_assign (lhs, build_zero_cst (TREE_TYPE (lhs)));
set_vinfo_for_stmt (new_stmt, stmt_info);
set_vinfo_for_stmt (stmt_info->stmt, NULL);
STMT_VINFO_STMT (stmt_info) = new_stmt;
vec_info *vinfo = stmt_info->vinfo;
struct loop *loop = loop_vinfo ? LOOP_VINFO_LOOP (loop_vinfo) : NULL;
tree fndecl, new_temp;
- gimple *new_stmt = NULL;
int ncopies, j;
auto_vec<simd_call_arg_info> arginfo;
vec<tree> vargs = vNULL;
= build3 (BIT_FIELD_REF, atype, vec_oprnd0,
bitsize_int (prec),
bitsize_int ((m & (k - 1)) * prec));
- new_stmt
+ gassign *new_stmt
= gimple_build_assign (make_ssa_name (atype),
vec_oprnd0);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
else
{
vec_oprnd0 = build_constructor (atype, ctor_elts);
- new_stmt
+ gassign *new_stmt
= gimple_build_assign (make_ssa_name (atype),
vec_oprnd0);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
ncopies * nunits);
tree tcst = wide_int_to_tree (type, cst);
tree phi_arg = copy_ssa_name (op);
- new_stmt
+ gassign *new_stmt
= gimple_build_assign (phi_arg, code, phi_res, tcst);
gimple_stmt_iterator si = gsi_after_labels (loop->header);
gsi_insert_after (&si, new_stmt, GSI_NEW_STMT);
j * nunits);
tree tcst = wide_int_to_tree (type, cst);
new_temp = make_ssa_name (TREE_TYPE (op));
- new_stmt = gimple_build_assign (new_temp, code,
- arginfo[i].op, tcst);
+ gassign *new_stmt
+ = gimple_build_assign (new_temp, code,
+ arginfo[i].op, tcst);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
vargs.safe_push (new_temp);
}
}
}
- new_stmt = gimple_build_call_vec (fndecl, vargs);
+ gcall *new_call = gimple_build_call_vec (fndecl, vargs);
if (vec_dest)
{
gcc_assert (ratype || simd_clone_subparts (rtype) == nunits);
new_temp = create_tmp_var (ratype);
else if (simd_clone_subparts (vectype)
== simd_clone_subparts (rtype))
- new_temp = make_ssa_name (vec_dest, new_stmt);
+ new_temp = make_ssa_name (vec_dest, new_call);
else
- new_temp = make_ssa_name (rtype, new_stmt);
- gimple_call_set_lhs (new_stmt, new_temp);
+ new_temp = make_ssa_name (rtype, new_call);
+ gimple_call_set_lhs (new_call, new_temp);
}
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ stmt_vec_info new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_call, gsi);
if (vec_dest)
{
else
t = build3 (BIT_FIELD_REF, vectype, new_temp,
bitsize_int (prec), bitsize_int (l * prec));
- new_stmt
+ gimple *new_stmt
= gimple_build_assign (make_ssa_name (vectype), t);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
+
if (j == 0 && l == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info)
+ = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ prev_stmt_info = new_stmt_info;
}
if (ratype)
{
tree tem = build4 (ARRAY_REF, rtype, new_temp,
size_int (m), NULL_TREE, NULL_TREE);
- new_stmt
+ gimple *new_stmt
= gimple_build_assign (make_ssa_name (rtype), tem);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
CONSTRUCTOR_APPEND_ELT (ret_ctor_elts, NULL_TREE,
gimple_assign_lhs (new_stmt));
}
if ((j & (k - 1)) != k - 1)
continue;
vec_oprnd0 = build_constructor (vectype, ret_ctor_elts);
- new_stmt
+ gimple *new_stmt
= gimple_build_assign (make_ssa_name (vec_dest), vec_oprnd0);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if ((unsigned) j == k - 1)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ prev_stmt_info = new_stmt_info;
continue;
}
else if (ratype)
tree t = build_fold_addr_expr (new_temp);
t = build2 (MEM_REF, vectype, t,
build_int_cst (TREE_TYPE (t), 0));
- new_stmt
+ gimple *new_stmt
= gimple_build_assign (make_ssa_name (vec_dest), t);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
vect_clobber_variable (stmt, gsi, new_temp);
}
}
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ prev_stmt_info = new_stmt_info;
}
vargs.release ();
if (slp_node)
return true;
+ gimple *new_stmt;
if (scalar_dest)
{
type = TREE_TYPE (scalar_dest);
{
unsigned int i;
tree vop0, vop1, new_tmp, vec_dest;
- gimple *new_stmt;
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
vec_dest = vec_dsts.pop ();
/* Create demotion operation. */
vop0 = (*vec_oprnds)[i];
vop1 = (*vec_oprnds)[i + 1];
- new_stmt = gimple_build_assign (vec_dest, code, vop0, vop1);
+ gassign *new_stmt = gimple_build_assign (vec_dest, code, vop0, vop1);
new_tmp = make_ssa_name (vec_dest, new_stmt);
gimple_assign_set_lhs (new_stmt, new_tmp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ stmt_vec_info new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (multi_step_cvt)
/* Store the resulting vector for next recursive call. */
vectors in SLP_NODE or in vector info of the scalar statement
(or in STMT_VINFO_RELATED_STMT chain). */
if (slp_node)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
else
{
if (!*prev_stmt_info)
- STMT_VINFO_VEC_STMT (stmt_info) = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (*prev_stmt_info) = new_stmt;
+ STMT_VINFO_RELATED_STMT (*prev_stmt_info) = new_stmt_info;
- *prev_stmt_info = vinfo_for_stmt (new_stmt);
+ *prev_stmt_info = new_stmt_info;
}
}
}
tree new_temp;
enum vect_def_type dt[2] = {vect_unknown_def_type, vect_unknown_def_type};
int ndts = 2;
- gimple *new_stmt = NULL;
stmt_vec_info prev_stmt_info;
poly_uint64 nunits_in;
poly_uint64 nunits_out;
FOR_EACH_VEC_ELT (vec_oprnds0, i, vop0)
{
+ stmt_vec_info new_stmt_info;
/* Arguments are ready, create the new vector stmt. */
if (code1 == CALL_EXPR)
{
- new_stmt = gimple_build_call (decl1, 1, vop0);
+ gcall *new_stmt = gimple_build_call (decl1, 1, vop0);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_call_set_lhs (new_stmt, new_temp);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
else
{
gcc_assert (TREE_CODE_LENGTH (code1) == unary_op);
- new_stmt = gimple_build_assign (vec_dest, code1, vop0);
+ gassign *new_stmt
+ = gimple_build_assign (vec_dest, code1, vop0);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_assign_set_lhs (new_stmt, new_temp);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (slp_node)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
else
{
if (!prev_stmt_info)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info)
+ = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
+ prev_stmt_info = new_stmt_info;
}
}
}
FOR_EACH_VEC_ELT (vec_oprnds0, i, vop0)
{
+ stmt_vec_info new_stmt_info;
if (cvt_type)
{
if (codecvt1 == CALL_EXPR)
{
- new_stmt = gimple_build_call (decl1, 1, vop0);
+ gcall *new_stmt = gimple_build_call (decl1, 1, vop0);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_call_set_lhs (new_stmt, new_temp);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
else
{
gcc_assert (TREE_CODE_LENGTH (codecvt1) == unary_op);
new_temp = make_ssa_name (vec_dest);
- new_stmt = gimple_build_assign (new_temp, codecvt1,
- vop0);
+ gassign *new_stmt
+ = gimple_build_assign (new_temp, codecvt1, vop0);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
-
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
else
- new_stmt = SSA_NAME_DEF_STMT (vop0);
+ new_stmt_info = vinfo->lookup_def (vop0);
if (slp_node)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
else
{
if (!prev_stmt_info)
- STMT_VINFO_VEC_STMT (stmt_info) = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
+ prev_stmt_info = new_stmt_info;
}
}
}
{
if (codecvt1 == CALL_EXPR)
{
- new_stmt = gimple_build_call (decl1, 1, vop0);
+ gcall *new_stmt = gimple_build_call (decl1, 1, vop0);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_call_set_lhs (new_stmt, new_temp);
+ vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
else
{
gcc_assert (TREE_CODE_LENGTH (codecvt1) == unary_op);
new_temp = make_ssa_name (vec_dest);
- new_stmt = gimple_build_assign (new_temp, codecvt1,
- vop0);
+ gassign *new_stmt
+ = gimple_build_assign (new_temp, codecvt1, vop0);
+ vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
vec_oprnds0[i] = new_temp;
}
tree vop;
bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
vec_info *vinfo = stmt_info->vinfo;
- gimple *new_stmt = NULL;
stmt_vec_info prev_stmt_info = NULL;
enum tree_code code;
tree vectype_in;
vect_get_vec_defs_for_stmt_copy (dt, &vec_oprnds, NULL);
/* Arguments are ready. create the new vector stmt. */
+ stmt_vec_info new_stmt_info = NULL;
FOR_EACH_VEC_ELT (vec_oprnds, i, vop)
{
if (CONVERT_EXPR_CODE_P (code)
|| code == VIEW_CONVERT_EXPR)
vop = build1 (VIEW_CONVERT_EXPR, vectype, vop);
- new_stmt = gimple_build_assign (vec_dest, vop);
+ gassign *new_stmt = gimple_build_assign (vec_dest, vop);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_assign_set_lhs (new_stmt, new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (slp_node)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
}
if (slp_node)
continue;
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ prev_stmt_info = new_stmt_info;
}
vec_oprnds.release ();
machine_mode optab_op2_mode;
enum vect_def_type dt[2] = {vect_unknown_def_type, vect_unknown_def_type};
int ndts = 2;
- gimple *new_stmt = NULL;
stmt_vec_info prev_stmt_info;
poly_uint64 nunits_in;
poly_uint64 nunits_out;
vect_get_vec_defs_for_stmt_copy (dt, &vec_oprnds0, &vec_oprnds1);
/* Arguments are ready. Create the new vector stmt. */
+ stmt_vec_info new_stmt_info = NULL;
FOR_EACH_VEC_ELT (vec_oprnds0, i, vop0)
{
vop1 = vec_oprnds1[i];
- new_stmt = gimple_build_assign (vec_dest, code, vop0, vop1);
+ gassign *new_stmt = gimple_build_assign (vec_dest, code, vop0, vop1);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_assign_set_lhs (new_stmt, new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (slp_node)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
}
if (slp_node)
continue;
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
+ prev_stmt_info = new_stmt_info;
}
vec_oprnds0.release ();
enum vect_def_type dt[3]
= {vect_unknown_def_type, vect_unknown_def_type, vect_unknown_def_type};
int ndts = 3;
- gimple *new_stmt = NULL;
stmt_vec_info prev_stmt_info;
poly_uint64 nunits_in;
poly_uint64 nunits_out;
}
/* Arguments are ready. Create the new vector stmt. */
+ stmt_vec_info new_stmt_info = NULL;
FOR_EACH_VEC_ELT (vec_oprnds0, i, vop0)
{
vop1 = ((op_type == binary_op || op_type == ternary_op)
? vec_oprnds1[i] : NULL_TREE);
vop2 = ((op_type == ternary_op)
? vec_oprnds2[i] : NULL_TREE);
- new_stmt = gimple_build_assign (vec_dest, code, vop0, vop1, vop2);
+ gassign *new_stmt = gimple_build_assign (vec_dest, code,
+ vop0, vop1, vop2);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_assign_set_lhs (new_stmt, new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (vec_cvt_dest)
{
new_temp = build1 (VIEW_CONVERT_EXPR, vectype_out, new_temp);
- new_stmt = gimple_build_assign (vec_cvt_dest, VIEW_CONVERT_EXPR,
- new_temp);
+ gassign *new_stmt
+ = gimple_build_assign (vec_cvt_dest, VIEW_CONVERT_EXPR,
+ new_temp);
new_temp = make_ssa_name (vec_cvt_dest, new_stmt);
gimple_assign_set_lhs (new_stmt, new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
if (slp_node)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
}
if (slp_node)
continue;
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
+ prev_stmt_info = new_stmt_info;
}
vec_oprnds0.release ();
vec_info *vinfo = stmt_info->vinfo;
tree aggr_type;
gather_scatter_info gs_info;
- gimple *new_stmt;
poly_uint64 vf;
vec_load_store_type vls_type;
tree ref_type;
TYPE_VECTOR_SUBPARTS (srctype)));
var = vect_get_new_ssa_name (srctype, vect_simple_var);
src = build1 (VIEW_CONVERT_EXPR, srctype, src);
- new_stmt = gimple_build_assign (var, VIEW_CONVERT_EXPR, src);
+ gassign *new_stmt
+ = gimple_build_assign (var, VIEW_CONVERT_EXPR, src);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
src = var;
}
TYPE_VECTOR_SUBPARTS (idxtype)));
var = vect_get_new_ssa_name (idxtype, vect_simple_var);
op = build1 (VIEW_CONVERT_EXPR, idxtype, op);
- new_stmt = gimple_build_assign (var, VIEW_CONVERT_EXPR, op);
+ gassign *new_stmt
+ = gimple_build_assign (var, VIEW_CONVERT_EXPR, op);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
op = var;
}
- new_stmt
+ gcall *new_stmt
= gimple_build_call (gs_info.decl, 5, ptr, mask, op, src, scale);
-
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ stmt_vec_info new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (prev_stmt_info == NULL_STMT_VEC_INFO)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
+ prev_stmt_info = new_stmt_info;
}
return true;
}
/* And store it to *running_off. */
assign = gimple_build_assign (newref, elem);
- vect_finish_stmt_generation (stmt, assign, gsi);
+ stmt_vec_info assign_info
+ = vect_finish_stmt_generation (stmt, assign, gsi);
group_el += lnel;
if (! slp
{
if (j == 0 && i == 0)
STMT_VINFO_VEC_STMT (stmt_info)
- = *vec_stmt = assign;
+ = *vec_stmt = assign_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = assign;
- prev_stmt_info = vinfo_for_stmt (assign);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = assign_info;
+ prev_stmt_info = assign_info;
}
}
}
tree vec_mask = NULL_TREE;
for (j = 0; j < ncopies; j++)
{
-
+ stmt_vec_info new_stmt_info;
if (j == 0)
{
if (slp)
gimple_call_set_lhs (call, data_ref);
}
gimple_call_set_nothrow (call, true);
- new_stmt = call;
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info = vect_finish_stmt_generation (stmt, call, gsi);
/* Record that VEC_ARRAY is now dead. */
vect_clobber_variable (stmt, gsi, vec_array);
}
else
{
- new_stmt = NULL;
+ new_stmt_info = NULL;
if (grouped_store)
{
if (j == 0)
(IFN_SCATTER_STORE, 4, dataref_ptr, vec_offset,
scale, vec_oprnd);
gimple_call_set_nothrow (call, true);
- new_stmt = call;
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, call, gsi);
break;
}
dataref_ptr, ptr,
final_mask, vec_oprnd);
gimple_call_set_nothrow (call, true);
- new_stmt = call;
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, call, gsi);
}
else
{
= build_aligned_type (TREE_TYPE (data_ref),
TYPE_ALIGN (elem_type));
vect_copy_ref_info (data_ref, DR_REF (first_dr));
- new_stmt = gimple_build_assign (data_ref, vec_oprnd);
+ gassign *new_stmt
+ = gimple_build_assign (data_ref, vec_oprnd);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (slp)
continue;
if (!slp)
{
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
+ prev_stmt_info = new_stmt_info;
}
}
tree elem_type;
tree new_temp;
machine_mode mode;
- gimple *new_stmt = NULL;
tree dummy;
enum dr_alignment_support alignment_support_scheme;
tree dataref_ptr = NULL_TREE;
{
if (nloads > 1)
vec_alloc (v, nloads);
+ stmt_vec_info new_stmt_info = NULL;
for (i = 0; i < nloads; i++)
{
tree this_off = build_int_cst (TREE_TYPE (alias_off),
group_el * elsz + cst_offset);
tree data_ref = build2 (MEM_REF, ltype, running_off, this_off);
vect_copy_ref_info (data_ref, DR_REF (first_dr));
- new_stmt = gimple_build_assign (make_ssa_name (ltype), data_ref);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ gassign *new_stmt
+ = gimple_build_assign (make_ssa_name (ltype), data_ref);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (nloads > 1)
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE,
gimple_assign_lhs (new_stmt));
{
tree vec_inv = build_constructor (lvectype, v);
new_temp = vect_init_vector (stmt, vec_inv, lvectype, gsi);
- new_stmt = SSA_NAME_DEF_STMT (new_temp);
+ new_stmt_info = vinfo->lookup_def (new_temp);
if (lvectype != vectype)
{
- new_stmt = gimple_build_assign (make_ssa_name (vectype),
- VIEW_CONVERT_EXPR,
- build1 (VIEW_CONVERT_EXPR,
- vectype, new_temp));
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ gassign *new_stmt
+ = gimple_build_assign (make_ssa_name (vectype),
+ VIEW_CONVERT_EXPR,
+ build1 (VIEW_CONVERT_EXPR,
+ vectype, new_temp));
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
}
if (slp)
{
if (slp_perm)
- dr_chain.quick_push (gimple_assign_lhs (new_stmt));
+ dr_chain.quick_push (gimple_assign_lhs (new_stmt_info->stmt));
else
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
}
else
{
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
+ prev_stmt_info = new_stmt_info;
}
}
if (slp_perm)
poly_uint64 group_elt = 0;
for (j = 0; j < ncopies; j++)
{
+ stmt_vec_info new_stmt_info = NULL;
/* 1. Create the vector or array pointer update chain. */
if (j == 0)
{
}
gimple_call_set_lhs (call, vec_array);
gimple_call_set_nothrow (call, true);
- new_stmt = call;
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info = vect_finish_stmt_generation (stmt, call, gsi);
/* Extract each vector into an SSA_NAME. */
for (i = 0; i < vec_num; i++)
stmt, bump);
/* 2. Create the vector-load in the loop. */
+ gimple *new_stmt = NULL;
switch (alignment_support_scheme)
{
case dr_aligned:
}
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_set_lhs (new_stmt, new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
/* 3. Handle explicit realignment if necessary/supported.
Create in loop:
msq, lsq, realignment_token);
new_temp = make_ssa_name (vec_dest, new_stmt);
gimple_assign_set_lhs (new_stmt, new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (alignment_support_scheme == dr_explicit_realign_optimized)
{
(gimple_assign_rhs1 (stmt))));
new_temp = vect_init_vector (stmt, tem, vectype, NULL);
new_stmt = SSA_NAME_DEF_STMT (new_temp);
- vinfo->add_stmt (new_stmt);
+ new_stmt_info = vinfo->add_stmt (new_stmt);
}
else
{
gsi_next (&gsi2);
new_temp = vect_init_vector (stmt, scalar_dest,
vectype, &gsi2);
- new_stmt = SSA_NAME_DEF_STMT (new_temp);
+ new_stmt_info = vinfo->lookup_def (new_temp);
}
}
tree perm_mask = perm_mask_for_reverse (vectype);
new_temp = permute_vec_elements (new_temp, new_temp,
perm_mask, stmt, gsi);
- new_stmt = SSA_NAME_DEF_STMT (new_temp);
+ new_stmt_info = vinfo->lookup_def (new_temp);
}
/* Collect vector loads and later create their permutation in
/* Store vector loads in the corresponding SLP_NODE. */
if (slp && !slp_perm)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
/* With SLP permutation we load the gaps as well, without
we need to skip the gaps after we manage to fully load
else
{
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
+ prev_stmt_info = new_stmt_info;
}
}
dr_chain.release ();
/* Handle cond expr. */
for (j = 0; j < ncopies; j++)
{
- gimple *new_stmt = NULL;
+ stmt_vec_info new_stmt_info = NULL;
if (j == 0)
{
if (slp_node)
else
{
new_temp = make_ssa_name (vec_cmp_type);
+ gassign *new_stmt;
if (bitop1 == BIT_NOT_EXPR)
new_stmt = gimple_build_assign (new_temp, bitop1,
vec_cond_rhs);
if (!is_gimple_val (vec_compare))
{
tree vec_compare_name = make_ssa_name (vec_cmp_type);
- new_stmt = gimple_build_assign (vec_compare_name,
- vec_compare);
+ gassign *new_stmt = gimple_build_assign (vec_compare_name,
+ vec_compare);
vect_finish_stmt_generation (stmt, new_stmt, gsi);
vec_compare = vec_compare_name;
}
gcc_assert (reduc_index == 2);
- new_stmt = gimple_build_call_internal
+ gcall *new_stmt = gimple_build_call_internal
(IFN_FOLD_EXTRACT_LAST, 3, else_clause, vec_compare,
vec_then_clause);
gimple_call_set_lhs (new_stmt, scalar_dest);
SSA_NAME_DEF_STMT (scalar_dest) = new_stmt;
if (stmt == gsi_stmt (*gsi))
- vect_finish_replace_stmt (stmt, new_stmt);
+ new_stmt_info = vect_finish_replace_stmt (stmt, new_stmt);
else
{
/* In this case we're moving the definition to later in the
lhs are in phi statements. */
gimple_stmt_iterator old_gsi = gsi_for_stmt (stmt);
gsi_remove (&old_gsi, true);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
}
else
{
new_temp = make_ssa_name (vec_dest);
- new_stmt = gimple_build_assign (new_temp, VEC_COND_EXPR,
- vec_compare, vec_then_clause,
- vec_else_clause);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ gassign *new_stmt
+ = gimple_build_assign (new_temp, VEC_COND_EXPR, vec_compare,
+ vec_then_clause, vec_else_clause);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
if (slp_node)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
}
if (slp_node)
continue;
- if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
- else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+ if (j == 0)
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
+ else
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ prev_stmt_info = new_stmt_info;
}
vec_oprnds0.release ();
/* Handle cmp expr. */
for (j = 0; j < ncopies; j++)
{
- gassign *new_stmt = NULL;
+ stmt_vec_info new_stmt_info = NULL;
if (j == 0)
{
if (slp_node)
new_temp = make_ssa_name (mask);
if (bitop1 == NOP_EXPR)
{
- new_stmt = gimple_build_assign (new_temp, code,
- vec_rhs1, vec_rhs2);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ gassign *new_stmt = gimple_build_assign (new_temp, code,
+ vec_rhs1, vec_rhs2);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
else
{
+ gassign *new_stmt;
if (bitop1 == BIT_NOT_EXPR)
new_stmt = gimple_build_assign (new_temp, bitop1, vec_rhs2);
else
new_stmt = gimple_build_assign (new_temp, bitop1, vec_rhs1,
vec_rhs2);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
if (bitop2 != NOP_EXPR)
{
tree res = make_ssa_name (mask);
else
new_stmt = gimple_build_assign (res, bitop2, vec_rhs1,
new_temp);
- vect_finish_stmt_generation (stmt, new_stmt, gsi);
+ new_stmt_info
+ = vect_finish_stmt_generation (stmt, new_stmt, gsi);
}
}
if (slp_node)
- SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);
+ SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt_info);
}
if (slp_node)
continue;
if (j == 0)
- STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt;
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
- STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt;
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
- prev_stmt_info = vinfo_for_stmt (new_stmt);
+ prev_stmt_info = new_stmt_info;
}
vec_oprnds0.release ();