https://gcc.gnu.org/g:94f203a3695d9779b84f41e36a295a90e7ba2f16
commit r16-4295-g94f203a3695d9779b84f41e36a295a90e7ba2f16 Author: Richard Biener <[email protected]> Date: Wed Oct 8 09:19:50 2025 +0200 Check non-strictly vect_internal_def internal defs in integer_type_for_mask We are missing masks produced by inductions or reductions otherwise. * tree-vect-patterns.cc (integer_type_for_mask): Only reject vect_external_defs. Diff: --- gcc/tree-vect-patterns.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc index 55c50420e32a..8b4f9840181e 100644 --- a/gcc/tree-vect-patterns.cc +++ b/gcc/tree-vect-patterns.cc @@ -5452,8 +5452,10 @@ integer_type_for_mask (tree var, vec_info *vinfo) if (!VECT_SCALAR_BOOLEAN_TYPE_P (TREE_TYPE (var))) return NULL_TREE; - stmt_vec_info def_stmt_info = vect_get_internal_def (vinfo, var); - if (!def_stmt_info || !vect_use_mask_type_p (def_stmt_info)) + stmt_vec_info def_stmt_info = vinfo->lookup_def (var); + if (!def_stmt_info + || STMT_VINFO_DEF_TYPE (def_stmt_info) == vect_external_def + || !vect_use_mask_type_p (def_stmt_info)) return NULL_TREE; return build_nonstandard_integer_type (def_stmt_info->mask_precision, 1);
