https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70251
--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Ilya Enkovich from comment #2) > Here is a responsible match.pd pattern: > > /* A + (B vcmp C ? 1 : 0) -> A - (B vcmp C), since vector comparisons > return all-1 or all-0 results. */ Since we don't simplify (x<y)?-1:0 to (x<y) anymore for vectors (on any platform), it seems weird to keep this optimization at all. Maybe it should be instead: A + (B vcmp C ? 1 : 0) -> A - (B vcmp C ? -1 : 0) ?