https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68062
--- Comment #12 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #11) > We still get the bogus IR but we don't ICE any more: > v4qi c; > uv4qi d; > > c = {a, a, a, a}; > d = {a, a, a, a}; > D.2757 = c != d; > D.2758 = VEC_COND_EXPR <D.2757, { -1, -1, -1, -1 }, { 0, 0, 0, 0 }>; > D.2759 = VIEW_CONVERT_EXPR<v4qi>(D.2758); > > Also VEC_COND_EXPR really should not be there. What's bogus with the IR? The VIEW_CONVERT need not be there as it can be combined with the VEC_COND_EXPR RHSs. We can't drop the VEC_COND_EXPR as c != d results in a vector bool while we want a v4qi.