]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Check non-strictly vect_internal_def internal defs in integer_type_for_mask
authorRichard Biener <rguenther@suse.de>
Wed, 8 Oct 2025 07:19:50 +0000 (09:19 +0200)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 8 Oct 2025 11:39:05 +0000 (13:39 +0200)
We are missing masks produced by inductions or reductions otherwise.

* tree-vect-patterns.cc (integer_type_for_mask): Only
reject vect_external_defs.

gcc/tree-vect-patterns.cc

index 55c50420e32af772fe61b8615582fed2a80330cd..8b4f9840181e82e44aa60a41dcfe179e08f8291d 100644 (file)
@@ -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);