[llvm-bugs] [Bug 38327] New: Subtract stack pointer instead of push
via llvm-bugs
llvm-bugs at lists.llvm.org
Thu Jul 26 01:55:00 PDT 2018
https://bugs.llvm.org/show_bug.cgi?id=38327
Bug ID: 38327
Summary: Subtract stack pointer instead of push
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Backend: X86
Assignee: unassignedbugs at nondot.org
Reporter: david.bolvansky at gmail.com
CC: llvm-bugs at lists.llvm.org
Code:
int is_enabled(void);
int tobool(void) {
return !!is_enabled();
}
int tobool2(void) {
if(is_enabled())
return 9;
return 4;
}
Clang -O3:
tobool: # @tobool
push rax
call is_enabled
xor ecx, ecx
test eax, eax
setne cl
mov eax, ecx
pop rcx
ret
tobool2: # @tobool2
push rax
call is_enabled
xor ecx, ecx
test eax, eax
setne cl
lea eax, [rcx + 4*rcx]
add eax, 4
pop rcx
ret
GCC avoid push, it uses sub rsp, 8.
tobool:
sub rsp, 8
call is_enabled
test eax, eax
setne al
add rsp, 8
movzx eax, al
ret
tobool2:
sub rsp, 8
call is_enabled
cmp eax, 1
sbb eax, eax
add rsp, 8
and eax, -5
add eax, 9
ret
Maybe it could be worth (less instructions, register pressure) to follow GCC
decision, I think.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180726/0a9316cf/attachment.html>
More information about the llvm-bugs
mailing list