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]

Re: forcing tail/sibling call optimization


Harvey,
> The caller of xyz (call it f) would have to jump to xyz.  The caller
> of f is going to pop f's args when f returns.  How is the caller
> going to pop off the right amount of space after f's effectively
> changed the amount of space that it's using?  If xyz uses the same
> amount of stack space as f, then it's possible.  The nature of the
> specific instructions used for manipulating the stack could make it
> possible.  But I don't see how it can work in general.

The standard method when hand-coding asm is if f takes as many or more 
arguments than xyz, then f overwrites it's arguments.  f may leave 
some of its arguments untouched if xyz takes fewer args.  In the event 
that xyz takes more arguments than f, you're best to make a normal 
call not a tail call.  I assume the same is applicable to the gcc.

	-Travis Moulton




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