This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]