[LLVMdev] Broke my tail (call)

Török Edwin edwintorok at gmail.com
Tue Feb 24 02:57:01 PST 2009


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



More information about the llvm-dev mailing list