https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19792
Steven Bosscher <steven at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed|2016-08-06 00:00:00 |2019-3-4
CC| |rguenth at gcc dot gnu.org
--- Comment #7 from Steven Bosscher <steven at gcc dot gnu.org> ---
Still an issue as of "g++ (Compiler-Explorer-Build) 9.0.1 20190303
(experimental)" on x86-64 at -O2:
_Z3fooj:
movslq %edi, %rax
movl %edi, %edi
movzbl size_lookup(%rdi), %edx
cmpb %dl, size_lookup(%rax)
sete %al
movzbl %al, %eax
ret
_Z3barj:
movl $1, %eax
ret
FWIW "clang version 7.0.0 (tags/RELEASE_700/final 342594)" at -O2:
_Z3fooj: # @_Z3fooj
movslq %edi, %rax
movb size_lookup(%rax), %cl
movl %eax, %edx
xorl %eax, %eax
cmpb size_lookup(%rdx), %cl
sete %al
retq
_Z3barj: # @_Z3barj
movl $1, %eax
retq
and "icc (ICC) 19.0.1.144 20181018":
_Z3fooj:
xorl %eax, %eax #6.36
movslq %edi, %rdi #6.11
movb size_lookup(%rdi), %dl #6.11
movl %edi, %edi #6.36
cmpb size_lookup(%rdi), %dl #6.36
sete %al #6.36
ret #6.36
_Z3barj:
movl $1, %eax #13.15
ret