On 21 March 2006 15:12, Paul Brook wrote:

> On Tuesday 21 March 2006 14:57, Richard Henderson wrote:
>> On Mon, Mar 20, 2006 at 04:03:08PM -0000, Dave Korn wrote:
>>>  Do you happen to know off the top of your head when get_frame_size()
>>> becomes valid?
>> 
>> You don't get a good first-pass estimate until after all rtl
>> generation has been done.  Which is later than you need.
>> 
>> Another possibility is to allocate an extra word high in the
>> stack frame for temporary storage in large frames w/ sibcalls
>> to functions using all arguments.  Then you'd deallocate in several steps:
>> 
>>      scratchslot = argument
>>      argument = stack frame size - small
>>      sp += argument
>>      argument = scratchslot
>>      sp += small
> 
> This assumes you have a frame pointer or sp+large_offset addressing mode for
> accessing scratchslot. In which case you could either use fp as scratch
> storage or probably have an add sp, large_offset instruction.
> 
> Paul


  :)  OK, I'll allocate a successive series of scratchslots every 32k all the
way up the stack and bounce the (continuously-reducing) frame size argument
from one to the next until we get within range of the top!



    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....

Reply via email to