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

            Bug ID: 94930
           Summary: Failure to optimize out subvsi in expansion of
                    __builtin_memcmp with 1 as the operand with -ftrapv
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gabravier at gmail dot com
  Target Milestone: ---

int memcmp1(const void *s, const void *c)
{
    return __builtin_memcmp(s, c, 1);
}

With -O3 -ftrapv, LLVM outputs this :

memcmp1(void const*, void const*): # @memcmp1(void const*, void const*)
  movzx eax, byte ptr [rdi]
  movzx ecx, byte ptr [rsi]
  sub eax, ecx
  ret

GCC outputs this :

memcmp1(void const*, void const*):
  sub rsp, 8
  movzx edi, BYTE PTR [rdi]
  movzx esi, BYTE PTR [rsi]
  call __subvsi3
  add rsp, 8
  ret

Reply via email to