[LLVMdev] Tail Call Optimisation

Simon Harris haruki.zaemon at gmail.com
Sun Jan 3 19:33:06 PST 2010


On 04/01/2010, at 3:01 PM, Jon Harrop wrote:

> On Monday 04 January 2010 01:12:55 Simon Harris wrote:
>> I'm investigating "improving" the TCO facilities in LLVM to provide for
>> "hard" tail calls. Specifically, this would involve extending the existing
>> implementation to discard the stack frame for the caller before executing
>> the callee. I would then like to extend this further by performing hard
>> tail calls on _all_ returning calls that no longer require the stack frame.
>> 
>> A colleague of mine and I have looked into it and prima facie believe that
>> it's entirely feasible. I wanted to ask the list if there was any interest,
>> any objections, and of course, anything pointers/tips that may prove
>> useful.
> 
> I am certainly interested in tail calls because my HLVM project relies upon 
> LLVM's tail call elimination. However, I do not understand what tail calls 
> LLVM is not currently eliminating that you plan to eliminate?

Mutual recursion for a start:

def a(n)
  n <= 0 ? "DONE" : b(n - 1)
end

def b(n)
  n <= 0 ? "DONE" : a(n - 1)
end

a(10000000)

Boom!
-- 
Simon Harris
w: http://www.harukizaemon.com/
e: haruki.zaemon at gmail.com
m: +61 417 505 611
t: @haruki_zaemon





More information about the llvm-dev mailing list