https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94727
--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Richard Sandiford <rsand...@gcc.gnu.org>: https://gcc.gnu.org/g:e62a820d686d1fa97a9eefdc65ca07d8f96ac9f4 commit r10-8006-ge62a820d686d1fa97a9eefdc65ca07d8f96ac9f4 Author: Richard Sandiford <richard.sandif...@arm.com> Date: Tue Apr 28 08:04:29 2020 +0100 vect: Fix COND_EXPRs involving variant booleans [PR94727] The previous patch for this PR handled separate comparisons. However, as arm targets show, the same fix is needed when handling comparisons embedded in a VEC_COND_EXPR. Here too, the problem is that vect_get_constant_vectors will calculate its own vector type, using truth_type_for on the STMT_VINFO_VECTYPE, and the vectoriable_* routines need to be consistent with that. 2020-04-28 Richard Sandiford <richard.sandif...@arm.com> gcc/ PR tree-optimization/94727 * tree-vect-stmts.c (vect_is_simple_cond): If both comparison operands are invariant booleans, use the mask type associated with the STMT_VINFO_VECTYPE. Use !slp_node instead of !vectype to exclude SLP. (vectorizable_condition): Pass vectype unconditionally to vect_is_simple_cond.