mirror of git://gcc.gnu.org/git/gcc.git
tree-optimization/122292 - fix reduction code gen issue
The following fixes a mixup of vector types checked when looking at a conditional reduction operation. We want the actual data vector input type, so look at the SLP trees type instead and special-case lane-reducing ops like the original code did. PR tree-optimization/122292 * tree-vect-loop.cc (vect_transform_reduction): Compute the input vector type the same way the analysis phase does.
This commit is contained in:
parent
b9c253795e
commit
6d9d969ab4
|
@ -7752,7 +7752,9 @@ vect_transform_reduction (loop_vec_info loop_vinfo,
|
||||||
assumption is not true: we use reduc_index to record the index of the
|
assumption is not true: we use reduc_index to record the index of the
|
||||||
reduction variable. */
|
reduction variable. */
|
||||||
int reduc_index = SLP_TREE_REDUC_IDX (slp_node);
|
int reduc_index = SLP_TREE_REDUC_IDX (slp_node);
|
||||||
tree vectype_in = SLP_TREE_VECTYPE (SLP_TREE_CHILDREN (slp_node)[0]);
|
tree vectype_in = SLP_TREE_VECTYPE (slp_node);
|
||||||
|
if (lane_reducing_op_p (op.code))
|
||||||
|
vectype_in = SLP_TREE_VECTYPE (SLP_TREE_CHILDREN (slp_node)[0]);
|
||||||
|
|
||||||
vec_num = vect_get_num_copies (loop_vinfo, SLP_TREE_CHILDREN (slp_node)[0]);
|
vec_num = vect_get_num_copies (loop_vinfo, SLP_TREE_CHILDREN (slp_node)[0]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue