Filed:<div><a href="http://llvm.org/bugs/show_bug.cgi?id=6876">http://llvm.org/bugs/show_bug.cgi?id=6876</a></div><div><br></div><div>Cheers,</div><div>Nicolas<br><br><div class="gmail_quote">On Tue, Apr 13, 2010 at 10:56 PM, Eli Friedman <span dir="ltr"><<a href="mailto:eli.friedman@gmail.com">eli.friedman@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">On Tue, Apr 13, 2010 at 9:33 AM, nicolas geoffray<br>
<div class="im"><<a href="mailto:nicolas.geoffray@gmail.com">nicolas.geoffray@gmail.com</a>> wrote:<br>
</div><div class="im">> Hi Eli,<br>
> I know the pass that fails, it is MachineCSE. It stack overflows because<br>
> there are too many recursive calls to processBlock (line 362 of<br>
> lib/CodeGen/MachineCSE.cpp). But the recursion is here on purpose, and I am<br>
> sure there are other places where LLVM makes recursive calls. Or is<br>
> recursion forbidden in LLVM, and explicitly stated to be so?<br>
<br>
</div>Unbounded recursion is generally considered a bug; please file.<br>
<font color="#888888"><br>
-Eli<br>
</font><div><div></div><div class="h5"><br>
> On Tue, Apr 13, 2010 at 5:56 PM, Eli Friedman <<a href="mailto:eli.friedman@gmail.com">eli.friedman@gmail.com</a>><br>
> wrote:<br>
>><br>
>> On Tue, Apr 13, 2010 at 2:29 AM, Konrad Hinsen<br>
>> <<a href="mailto:konrad.hinsen@fastmail.net">konrad.hinsen@fastmail.net</a>> wrote:<br>
>> > On 11.04.2010, at 19:14, nicolas geoffray wrote:<br>
>> ><br>
>> >> On Sun, Apr 11, 2010 at 7:12 PM, Konrad Hinsen<br>
>> >> <<a href="mailto:konrad.hinsen@fastmail.net">konrad.hinsen@fastmail.net</a>> wrote<br>
>> >>> I am rather surprised that the size of a method should have an impact<br>
>> >>> on stack usage, but then I haven't looked at all at how VMKit works yet.<br>
>> >>> That's my next project :-)<br>
>> >>><br>
>> >> It has no impact on VMKit. The impact is on LLVM optimization passes<br>
>> >> that do recursive calls.<br>
>> ><br>
>> > I see... Could those passes simply be skipped for code blocks that are<br>
>> > too large? Ideally in LLVM, since it's LLVM that imposes the restriction? I<br>
>> > don't know much about LLVM yet, but my first thought would be that a code<br>
>> > handling system should be able to deal with code of any size. It may decide<br>
>> > not to optimize unusual cases, but it certainly shouldn't crash.<br>
>><br>
>> You're right, it shouldn't crash.  Can you track down which pass is<br>
>> crashing and file a<br>
>> bug?<br>
>><br>
>> -Eli<br>
><br>
><br>
</div></div></blockquote></div><br></div>