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.
assumption is not true: we use reduc_index to record the index of the
reduction variable. */
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]);