This is the mail archive of the
mailing list for the GCC project.
Re: FUNCTION_OK_FOR_SIBCALL vs INITIAL_FRAME_POINTER_OFFSET
On Mon, Mar 20, 2006 at 02:56:00PM -0000, Dave Korn wrote:
> If the stack frame size is >32kB, I need to use a temporary register in the
> epilogue to assemble the lo/hi parts of the frame size before adding it to the
> SP. In the non-sibcall version of the epilogue[*] it uses one of the
> arg-passing volatiles as a scratch register, but of course in a sibcall
> epilogue that register might have been pre-loaded with an argument for the
> sibcall which we don't want to trash. So rather than get hairy with trying to
> allocate scratch regs, I was just going to refuse sibcalls for functions with
> huge stack frames. Hence my curiosity.
Ah, interesting. In this case I'd deny sibcalls to functions that
use all of the available scratch registers for arguments. We do
something similar for i386 indirect sibcalls -- deny unless there's
a free register for the jump.