https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71854
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- --- tree-vect-stmts.c.jj4 2016-07-14 20:28:33.000000000 +0200 +++ tree-vect-stmts.c 2016-07-21 13:49:35.015011603 +0200 @@ -7763,7 +7763,17 @@ vectorizable_condition (gimple *stmt, gi vec_else_clause = vec_oprnds3[i]; if (masked) - vec_compare = vec_cond_lhs; + { + if (slp_node + && !VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (vec_cond_lhs))) + { + tree zero = build_zero_cst (TREE_TYPE (vec_cond_lhs)); + vec_compare = build2 (NE_EXPR, vec_cmp_type, + vec_cond_lhs, zero); + } + else + vec_compare = vec_cond_lhs; + } else { vec_cond_rhs = vec_oprnds1[i]; didn't help, the bug has to be elsewhere, guess related to SLP pattern recog and the VECTOR_BOOLEAN_P stuff. Anyway, not working on this.