Unexpected output from x86-x64 GCC 7 -O3 only fully optimizes func3
, proof that compilers still require good programmers.
func(int):
mov edx, edi
imul edx, edi
imul edx, edi
imul edx, edx
mov eax, edx
imul eax, edi
ret
func2(int):
cmp edi, 1
mov eax, 1
je .L2
mov eax, edi
imul eax, edi
imul eax, edi
imul eax, eax
imul eax, edi
.L2:
rep ret
func3(int):
mov eax, edi
ret
func4(unsigned int):
xor eax, eax
test edi, edi
setne al
ret