https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107546
--- Comment #5 from Marc Glisse <glisse at gcc dot gnu.org> --- typedef signed char v16qs __attribute__((vector_size(16))); auto bar(v16qs x) { return x < 48; } clang does expand it as 48 gt x. Gcc however does its usual change to x <= 47, which it then tries to expand as ~(x > 47). I guess the expansion for x <= y could be tweaked in the case where one argument is constant to undo what was done earlier in the pipeline and expand as 48 > x.