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