On 8/7/2017 8:43 AM, Jakub Jelinek wrote:
On Mon, Aug 07, 2017 at 08:39:24AM -0700, H.J. Lu wrote:
When Linux/x86-64 kernel is compiled with -fno-omit-frame-pointer.
this optimization removes more than 730
pushq %rbp
movq %rsp, %rbp
popq %rbp
If you don't want the frame pointer, why are you compiling with
-fno-omit-frame-pointer? Are you going to add
-fforce-no-omit-frame-pointer or something similar so that people can
actually get what they are asking for? This doesn't really make sense.
It is perfectly fine to omit frame pointer by default, when it isn't
required for something, but if the user asks for it, we shouldn't ignore his
request.
wanting a framepointer is very nice and desired...
... but if the optimizer/ins scheduler moves instructions outside of the
frame'd portion,
(it does it for cases like below as well), the value is already negative for
these
functions that don't have stack use.
<MPIDU_Sched_are_pending@@Base>:
mov all_schedules@@Base-0x38460,%rax
push %rbp
mov %rsp,%rbp
pop %rbp
cmpq $0x0,(%rax)
setne %al
movzbl %al,%eax
retq
(gcc 7.1 compiling mpich with LTO)
specifically the push/mov/pop back to back makes no sense at all to me.
if there was meat before the pop, sure.
but when there isn't......