[1/2] Relax vect_check_scalar_mask check
Checks
Context |
Check |
Description |
linaro-tcwg-bot/tcwg_gcc_build--master-arm |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 |
success
|
Build passed
|
Commit Message
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.
Bootstrapped and tested on x86_64-unknown-linux-gnu.
* tree-vect-stmts.cc (vect_check_scalar_mask): Only check
the scalar type for constant or extern defs.
---
gcc/tree-vect-stmts.cc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
@@ -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,