<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Aug 3, 2008, at 8:45 AM, kumar wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div><span class="Apple-style-span" style="font-family: Monaco; font-size: 10px; ">createTailCallEliminationPass()</span> is able to turn recursive </div><div>functions into loops when the functions are written</div><div>in tail recursive form. However, I'm unable to get it</div><div>to convert mutually recursive functions to run without</div><div>a growing stack. </div><div><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; "></span></div></div></blockquote><div><br></div>...</div><div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; ">doesn't get to run in constant stack space. </span></div><div>Is that possible with llvm?</div><div><br></div></div></blockquote>Sure, just run the function inliner pass first before the tail recursion elimination pass.</div><div><br></div><div>-Chris</div></body></html>