NOTE: My original post was MIME mangled.

So I'm reposting it. Sorry for that.

Hi,

createTailCallEliminationPass() is able to turn recursive

functions into loops when the functions are written

in tail recursive form. However, I'm unable to get it

to convert mutually recursive functions to run without

a growing stack.

For example (in pseudo code)-

define fact(n,result)

if n < 2

then result

else fact(n-1,result *n)

is converted into a loop correctly. However the following

mutually recursive pair -

define even(n)

if n == 0

then true

else odd(n-1)

define odd(n)

if n==0

then false

else even(n-1)

doesn't get to run in constant stack space.

Is that possible with llvm?

-Srikumar