https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98060

            Bug ID: 98060
           Summary: Failure to optimize cmp+setnb+add to cmp+sbb
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gabravier at gmail dot com
  Target Milestone: ---

int r(unsigned v0, unsigned v1, int v2)
{
    return (v0 >= v1) + v2;
}

This code, on x86, can be implemented with `cmp` followed by `sbb`. This
optimization is done by LLVM, but not by GCC.

-O3 x86 output on LLVM :

r:
  mov eax, edx
  cmp edi, esi
  sbb eax, -1
  ret

On GCC :

r:
  xor eax, eax
  cmp edi, esi
  setnb al
  add eax, edx
  ret

Reply via email to