https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117086
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- After a fix we now do mask__10.8_26 = _8 < { 0, 1, 2, 3, 4, 5, 6, 7 }; vect__ifc__23.10_28 = VEC_COND_EXPR <mask__10.8_26, { 0, 1, 2, 3, 4, 5, 6, 7 }, { 0, 0, 0, 0, 0, 0, 0, 0 }>; _30 = .REDUC_IOR (vect__ifc__23.10_28); if (vect__ifc__23.10_28 != { 0, 0, 0, 0, 0, 0, 0, 0 }) this we elide the .REDUC_IOR as desired but still leave (ne (vec_cond @0 @1 integer_zerop) integer_zerop) -> (ne @0 zero) on the plate. It possibly would work for (ne (vec_cond @0 @1 @2) @2) as well (and I'd be surprised if we didn't have this for (cond ...) already).