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).