&& (!mask
|| TREE_CODE (masktype) == INTEGER_TYPE
|| types_compatible_p (srctype, masktype)));
- if (mask && TREE_CODE (masktype) == INTEGER_TYPE)
+ if (mask)
masktype = truth_type_for (srctype);
tree mask_halftype = masktype;
if (masktype != real_masktype)
{
tree utype, optype = TREE_TYPE (mask_op);
- if (TYPE_MODE (real_masktype) == TYPE_MODE (optype))
+ if (VECTOR_TYPE_P (real_masktype)
+ || TYPE_MODE (real_masktype) == TYPE_MODE (optype))
utype = real_masktype;
else
utype = lang_hooks.types.type_for_mode (TYPE_MODE (optype), 1);