https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97502
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- So the following is problematic: vector(16) <signed-boolean:8> _12; vector(16) <signed-boolean:8> _14; vector(16) <signed-boolean:8> _32; _14 = vect__1.7_3 != { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; _12 = vect__2.10_15 == { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; _32 = VEC_COND_EXPR <_12, _14, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }>; using a VEC_COND_EXPR to combine two vector bools to another vector bool. The above could be folded to ~_12 & _14 instead.