From: Richard Biener Date: Wed, 23 Oct 2024 09:55:31 +0000 (+0200) Subject: Relax vect_check_scalar_mask check X-Git-Tag: basepoints/gcc-16~4892 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=07c357eae8df759705057b5d3fefdc52556fc23d;p=thirdparty%2Fgcc.git Relax vect_check_scalar_mask check When the mask is not a constant or external def there's no need to check the scalar type, in particular with SLP and the mask being a VEC_PERM_EXPR there isn't a scalar operand ready to check (not one vect_is_simple_use will get you). We later check the vector type and reject non-mask types there. * tree-vect-stmts.cc (vect_check_scalar_mask): Only check the scalar type for constant or extern defs. --- diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index ce5289ec60ee..9f1449dfc259 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -2520,7 +2520,8 @@ vect_check_scalar_mask (vec_info *vinfo, stmt_vec_info stmt_info, return false; } - if (!VECT_SCALAR_BOOLEAN_TYPE_P (TREE_TYPE (*mask))) + if ((mask_dt == vect_constant_def || mask_dt == vect_external_def) + && !VECT_SCALAR_BOOLEAN_TYPE_P (TREE_TYPE (*mask))) { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,