[LLVMdev] VMKit assertion failure

Eli Friedman eli.friedman at gmail.com
Tue Apr 13 13:56:54 PDT 2010


On Tue, Apr 13, 2010 at 9:33 AM, nicolas geoffray
<nicolas.geoffray at gmail.com> wrote:
> Hi Eli,
> I know the pass that fails, it is MachineCSE. It stack overflows because
> there are too many recursive calls to processBlock (line 362 of
> lib/CodeGen/MachineCSE.cpp). But the recursion is here on purpose, and I am
> sure there are other places where LLVM makes recursive calls. Or is
> recursion forbidden in LLVM, and explicitly stated to be so?

Unbounded recursion is generally considered a bug; please file.

-Eli

> On Tue, Apr 13, 2010 at 5:56 PM, Eli Friedman <eli.friedman at gmail.com>
> wrote:
>>
>> On Tue, Apr 13, 2010 at 2:29 AM, Konrad Hinsen
>> <konrad.hinsen at fastmail.net> wrote:
>> > On 11.04.2010, at 19:14, nicolas geoffray wrote:
>> >
>> >> On Sun, Apr 11, 2010 at 7:12 PM, Konrad Hinsen
>> >> <konrad.hinsen at fastmail.net> wrote
>> >>> I am rather surprised that the size of a method should have an impact
>> >>> on stack usage, but then I haven't looked at all at how VMKit works yet.
>> >>> That's my next project :-)
>> >>>
>> >> It has no impact on VMKit. The impact is on LLVM optimization passes
>> >> that do recursive calls.
>> >
>> > I see... Could those passes simply be skipped for code blocks that are
>> > too large? Ideally in LLVM, since it's LLVM that imposes the restriction? I
>> > don't know much about LLVM yet, but my first thought would be that a code
>> > handling system should be able to deal with code of any size. It may decide
>> > not to optimize unusual cases, but it certainly shouldn't crash.
>>
>> You're right, it shouldn't crash.  Can you track down which pass is
>> crashing and file a
>> bug?
>>
>> -Eli
>
>




More information about the llvm-dev mailing list