https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94913
--- Comment #1 from Gabriel Ravier <gabravier at gmail dot com> --- The same thing happens for this code : bool f(unsigned x, unsigned y) { return (x - y - 1) >= x; } LLVM outputs this : f(unsigned int, unsigned int): cmp esi, edi setae al ret GCC outputs this : f(unsigned int, unsigned int): mov eax, edi sub eax, esi sub eax, 1 cmp eax, edi setnb al ret