aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r--gcc/tree-vect-loop.c42
1 files changed, 18 insertions, 24 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index e74fe9a..9285e51 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -3412,7 +3412,7 @@ get_initial_def_for_induction (gimple *iv_phi)
/* iv_loop is nested in the loop to be vectorized. init_expr had already
been created during vectorization of previous stmts. We obtain it
from the STMT_VINFO_VEC_STMT of the defining stmt. */
- vec_init = vect_get_vec_def_for_operand (init_expr, iv_phi, NULL);
+ vec_init = vect_get_vec_def_for_operand (init_expr, iv_phi);
/* If the initial value is not of proper type, convert it. */
if (!useless_type_conversion_p (vectype, TREE_TYPE (vec_init)))
{
@@ -3798,8 +3798,7 @@ get_initial_def_for_reduction (gimple *stmt, tree init_val,
if (adjustment_def)
{
if (nested_in_vect_loop)
- *adjustment_def = vect_get_vec_def_for_operand (init_val, stmt,
- NULL);
+ *adjustment_def = vect_get_vec_def_for_operand (init_val, stmt);
else
*adjustment_def = init_val;
}
@@ -3853,7 +3852,7 @@ get_initial_def_for_reduction (gimple *stmt, tree init_val,
if (adjustment_def)
{
*adjustment_def = NULL_TREE;
- init_def = vect_get_vec_def_for_operand (init_val, stmt, NULL);
+ init_def = vect_get_vec_def_for_operand (init_val, stmt);
break;
}
@@ -4012,12 +4011,13 @@ vect_create_epilog_for_reduction (vec<tree> vect_defs, gimple *stmt,
NULL, slp_node, reduc_index);
else
{
+ /* Get at the scalar def before the loop, that defines the initial value
+ of the reduction variable. */
+ gimple *def_stmt = SSA_NAME_DEF_STMT (reduction_op);
+ tree op = PHI_ARG_DEF_FROM_EDGE (def_stmt, loop_preheader_edge (loop));
vec_initial_defs.create (1);
- /* For the case of reduction, vect_get_vec_def_for_operand returns
- the scalar def before the loop, that defines the initial value
- of the reduction variable. */
- vec_initial_def = vect_get_vec_def_for_operand (reduction_op, stmt,
- &adjustment_def);
+ vec_initial_def = get_initial_def_for_reduction (stmt, op,
+ &adjustment_def);
vec_initial_defs.quick_push (vec_initial_def);
}
@@ -4800,7 +4800,6 @@ vectorizable_reduction (gimple *stmt, gimple_stmt_iterator *gsi,
int op_type;
optab optab, reduc_optab;
tree new_temp = NULL_TREE;
- tree def;
gimple *def_stmt;
enum vect_def_type dt;
gphi *new_phi = NULL;
@@ -4956,8 +4955,8 @@ vectorizable_reduction (gimple *stmt, gimple_stmt_iterator *gsi,
if (i == 0 && code == COND_EXPR)
continue;
- is_simple_use = vect_is_simple_use_1 (ops[i], stmt, loop_vinfo,
- &def_stmt, &def, &dt, &tem);
+ is_simple_use = vect_is_simple_use (ops[i], loop_vinfo,
+ &def_stmt, &dt, &tem);
if (!vectype_in)
vectype_in = tem;
gcc_assert (is_simple_use);
@@ -4977,8 +4976,7 @@ vectorizable_reduction (gimple *stmt, gimple_stmt_iterator *gsi,
}
}
- is_simple_use = vect_is_simple_use_1 (ops[i], stmt, loop_vinfo,
- &def_stmt, &def, &dt, &tem);
+ is_simple_use = vect_is_simple_use (ops[i], loop_vinfo, &def_stmt, &dt, &tem);
if (!vectype_in)
vectype_in = tem;
gcc_assert (is_simple_use);
@@ -5340,12 +5338,11 @@ vectorizable_reduction (gimple *stmt, gimple_stmt_iterator *gsi,
else
{
loop_vec_def0 = vect_get_vec_def_for_operand (ops[!reduc_index],
- stmt, NULL);
+ stmt);
vec_oprnds0.quick_push (loop_vec_def0);
if (op_type == ternary_op)
{
- loop_vec_def1 = vect_get_vec_def_for_operand (op1, stmt,
- NULL);
+ loop_vec_def1 = vect_get_vec_def_for_operand (op1, stmt);
vec_oprnds1.quick_push (loop_vec_def1);
}
}
@@ -5356,17 +5353,15 @@ vectorizable_reduction (gimple *stmt, gimple_stmt_iterator *gsi,
{
enum vect_def_type dt;
gimple *dummy_stmt;
- tree dummy;
- vect_is_simple_use (ops[!reduc_index], stmt, loop_vinfo,
- &dummy_stmt, &dummy, &dt);
+ vect_is_simple_use (ops[!reduc_index], loop_vinfo,
+ &dummy_stmt, &dt);
loop_vec_def0 = vect_get_vec_def_for_stmt_copy (dt,
loop_vec_def0);
vec_oprnds0[0] = loop_vec_def0;
if (op_type == ternary_op)
{
- vect_is_simple_use (op1, stmt, loop_vinfo, &dummy_stmt,
- &dummy, &dt);
+ vect_is_simple_use (op1, loop_vinfo, &dummy_stmt, &dt);
loop_vec_def1 = vect_get_vec_def_for_stmt_copy (dt,
loop_vec_def1);
vec_oprnds1[0] = loop_vec_def1;
@@ -5595,7 +5590,6 @@ vectorizable_live_operation (gimple *stmt,
int i;
int op_type;
tree op;
- tree def;
gimple *def_stmt;
enum vect_def_type dt;
enum tree_code code;
@@ -5667,7 +5661,7 @@ vectorizable_live_operation (gimple *stmt,
else
op = gimple_op (stmt, i + 1);
if (op
- && !vect_is_simple_use (op, stmt, loop_vinfo, &def_stmt, &def, &dt))
+ && !vect_is_simple_use (op, loop_vinfo, &def_stmt, &dt))
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,