https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96528
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2020-08-25 Target Milestone|--- |11.0 Status|UNCONFIRMED |NEW --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- I think that eventually vector lowering should lower _1 = a == 5; _2 = b == 7; _3 = _1 | _2; _4 = _3 ? -1 : 0; to _31 = _1 ? -1 : 0; _32 = _2 ? -1 : 0; _33 = _31 | _32; _34 = _33 == -1; _4 = _34 ? -1 : 0; or so. Conditionals are really a mess, GIMPLE and optabs do not match 1:1 (we've rejected the idea of "splitting" VEC_COND_EXPR to VEC_COND_{EQ,NE,...}_EXPR and making it four-operand). Forcing vector compares to produce a bool vector result was the attempt to make the GIMPLE IL more streamlined, but obviously the above shows that code generation needs to be "fixed" - in this case it is vector lowering doing "code generation" (together with the later isel pass).