https://gcc.gnu.org/g:e5ae5b5ba6f2af408717034d82c40839642667b0
commit r16-4188-ge5ae5b5ba6f2af408717034d82c40839642667b0 Author: Richard Biener <[email protected]> Date: Thu Oct 2 14:41:01 2025 +0200 Disallow mask reduction vectorization When you trick bool pattern recognition to use a mask type for a reduction PHI you'll figure we're not ready to handle this because epilogue creation isn't expecting this yet. The following reverts part of the last change and makes this explicit. * tree-vect-loop.cc (vectorizable_reduction): Do not allow mask reductions. Diff: --- gcc/tree-vect-loop.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index 1d549e4a03e2..df45adbe035d 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -7177,6 +7177,15 @@ vectorizable_reduction (loop_vec_info loop_vinfo, tree vectype_out = SLP_TREE_VECTYPE (slp_for_stmt_info); VECT_REDUC_INFO_VECTYPE (reduc_info) = vectype_out; + /* We do not handle mask reductions correctly in the epilogue. */ + if (VECTOR_BOOLEAN_TYPE_P (vectype_out)) + { + if (dump_enabled_p ()) + dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, + "mask reduction not supported.\n"); + return false; + } + gimple_match_op op; if (!gimple_extract_op (stmt_info->stmt, &op)) gcc_unreachable (); @@ -7187,8 +7196,7 @@ vectorizable_reduction (loop_vec_info loop_vinfo, return false; /* Do not try to vectorize bit-precision reductions. */ - if (!VECTOR_BOOLEAN_TYPE_P (vectype_out) - && !type_has_mode_precision_p (op.type) + if (!type_has_mode_precision_p (op.type) && op.code != BIT_AND_EXPR && op.code != BIT_IOR_EXPR && op.code != BIT_XOR_EXPR)
