Commit c7ea76ea by Richard Biener Committed by Richard Biener

tree-vect-loop.c (vectorizable_reduction): Move variables to where they are used.

2019-10-01  Richard Biener  <rguenther@suse.de>

	* tree-vect-loop.c (vectorizable_reduction): Move variables
	to where they are used.

From-SVN: r276402
parent 58e721d2
2019-10-01 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vectorizable_reduction): Move variables
to where they are used.
2019-10-01 Segher Boessenkool <segher@kernel.crashing.org> 2019-10-01 Segher Boessenkool <segher@kernel.crashing.org>
* regrename.c (hide_operands): Use pc_rtx instead of cc0_rtx. * regrename.c (hide_operands): Use pc_rtx instead of cc0_rtx.
......
...@@ -5767,7 +5767,6 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -5767,7 +5767,6 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
slp_instance slp_node_instance, slp_instance slp_node_instance,
stmt_vector_for_cost *cost_vec) stmt_vector_for_cost *cost_vec)
{ {
tree vec_dest;
tree scalar_dest; tree scalar_dest;
tree vectype_out = STMT_VINFO_VECTYPE (stmt_info); tree vectype_out = STMT_VINFO_VECTYPE (stmt_info);
tree vectype_in = NULL_TREE; tree vectype_in = NULL_TREE;
...@@ -5778,29 +5777,21 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -5778,29 +5777,21 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
machine_mode vec_mode; machine_mode vec_mode;
int op_type; int op_type;
optab optab; optab optab;
tree new_temp = NULL_TREE;
enum vect_def_type dt, cond_reduc_dt = vect_unknown_def_type; enum vect_def_type dt, cond_reduc_dt = vect_unknown_def_type;
stmt_vec_info cond_stmt_vinfo = NULL; stmt_vec_info cond_stmt_vinfo = NULL;
tree scalar_type; tree scalar_type;
bool is_simple_use; bool is_simple_use;
int i; int i;
int ncopies; int ncopies;
stmt_vec_info prev_stmt_info, prev_phi_info; stmt_vec_info prev_phi_info;
bool single_defuse_cycle = false; bool single_defuse_cycle = false;
stmt_vec_info new_stmt_info = NULL;
int j; int j;
tree ops[3]; tree ops[3];
enum vect_def_type dts[3]; enum vect_def_type dts[3];
bool nested_cycle = false, found_nested_cycle_def = false; bool nested_cycle = false, found_nested_cycle_def = false;
bool double_reduc = false; bool double_reduc = false;
basic_block def_bb;
class loop * def_stmt_loop;
tree def_arg;
auto_vec<tree> vec_oprnds0;
auto_vec<tree> vec_oprnds1;
auto_vec<tree> vec_oprnds2;
int vec_num; int vec_num;
tree def0, tem; tree tem;
tree cr_index_scalar_type = NULL_TREE, cr_index_vector_type = NULL_TREE; tree cr_index_scalar_type = NULL_TREE, cr_index_vector_type = NULL_TREE;
tree cond_reduc_val = NULL_TREE; tree cond_reduc_val = NULL_TREE;
...@@ -5900,7 +5891,7 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -5900,7 +5891,7 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
} }
/* Create the destination vector */ /* Create the destination vector */
vec_dest = vect_create_destination_var (phi_result, vectype_out); tree vec_dest = vect_create_destination_var (phi_result, vectype_out);
/* Get the loop-entry arguments. */ /* Get the loop-entry arguments. */
tree vec_initial_def; tree vec_initial_def;
...@@ -6348,15 +6339,16 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -6348,15 +6339,16 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
if (nested_cycle) if (nested_cycle)
{ {
def_bb = gimple_bb (reduc_def_phi); basic_block def_bb = gimple_bb (reduc_def_phi);
def_stmt_loop = def_bb->loop_father; class loop *def_stmt_loop = def_bb->loop_father;
def_arg = PHI_ARG_DEF_FROM_EDGE (reduc_def_phi, tree def_arg = PHI_ARG_DEF_FROM_EDGE (reduc_def_phi,
loop_preheader_edge (def_stmt_loop)); loop_preheader_edge (def_stmt_loop));
stmt_vec_info def_arg_stmt_info = loop_vinfo->lookup_def (def_arg); stmt_vec_info def_arg_stmt_info = loop_vinfo->lookup_def (def_arg);
if (def_arg_stmt_info if (def_arg_stmt_info
&& (STMT_VINFO_DEF_TYPE (def_arg_stmt_info) && (STMT_VINFO_DEF_TYPE (def_arg_stmt_info)
== vect_double_reduction_def)) == vect_double_reduction_def))
double_reduc = true; double_reduc = true;
gcc_assert (!double_reduc || STMT_VINFO_RELEVANT (stmt_info) == vect_used_in_outer_by_reduction);
} }
vect_reduction_type reduction_type vect_reduction_type reduction_type
...@@ -6670,6 +6662,8 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -6670,6 +6662,8 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
if (code == DOT_PROD_EXPR if (code == DOT_PROD_EXPR
&& !types_compatible_p (TREE_TYPE (ops[0]), TREE_TYPE (ops[1]))) && !types_compatible_p (TREE_TYPE (ops[0]), TREE_TYPE (ops[1])))
{ {
gcc_unreachable ();
/* No testcase for this. PR49478. */
if (TREE_CODE (ops[0]) == INTEGER_CST) if (TREE_CODE (ops[0]) == INTEGER_CST)
ops[0] = fold_convert (TREE_TYPE (ops[1]), ops[0]); ops[0] = fold_convert (TREE_TYPE (ops[1]), ops[0]);
else if (TREE_CODE (ops[1]) == INTEGER_CST) else if (TREE_CODE (ops[1]) == INTEGER_CST)
...@@ -6812,7 +6806,15 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -6812,7 +6806,15 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
return true; return true;
} }
/* Transform. */ /* Transform. */
stmt_vec_info new_stmt_info = NULL;
stmt_vec_info prev_stmt_info;
tree new_temp = NULL_TREE;
auto_vec<tree> vec_oprnds0;
auto_vec<tree> vec_oprnds1;
auto_vec<tree> vec_oprnds2;
tree def0;
if (dump_enabled_p ()) if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location, "transform reduction.\n"); dump_printf_loc (MSG_NOTE, vect_location, "transform reduction.\n");
...@@ -6836,7 +6838,7 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -6836,7 +6838,7 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
} }
/* Create the destination vector */ /* Create the destination vector */
vec_dest = vect_create_destination_var (scalar_dest, vectype_out); tree vec_dest = vect_create_destination_var (scalar_dest, vectype_out);
prev_stmt_info = NULL; prev_stmt_info = NULL;
prev_phi_info = NULL; prev_phi_info = NULL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment