[LLVMdev] Broke my tail (call)

Török Edwin
Tue, 24 Feb 2009 10:57:01 -0000

On 2009-02-24 12:35, Jon Harrop wrote:
> On Tuesday 24 February 2009 00:16:37 Dan Gohman wrote:
>
>> On Feb 23, 2009, at 5:59 AM, Anton Korobeynikov wrote:
>>
>>> This is not true in general and highly target- and CC- dependent.
For
>>> example, you can ran out of registers and then your struct can be
>>> passed
>>> partly in registers and partly on stack. And depending on the stack
>>> frame size of the callee you can easily get infinite stack growth.
>>>
>> There is a sense in which it is true -- first-class structs are
>> converted to a set of *virtual* registers holding their first-class
fields,
>> which may of course be passed on the stack when physical registers run
>> short, in exactly the same manner as with lots of scalar arguments.
>>
>
> Exactly.

In case of tailcall(+fastcc?), can't this be done in constant stackspace?
First time you allocate stackspace to pass the parameters, then all
other tailcalls will reuse the stackspace
that it got its parameters in, to pass parameters to the next tailcall.

Best regards
--Edwin