[LLVMdev] ExecutionEngine blew the stack ?

Evan Cheng evan.cheng at apple.com
Thu May 4 22:27:08 PDT 2006


Hi Simon,

You're probably right. LLVM's instruction selector is recursive so it  
can run out of stack space. Select_store used to have enormous stack  
frame (thanks to some gcc issues), we had to do all kinds of tricks  
to get it under control. I just took a look at it, it's around 0.7k.  
It used to be around 20k on x86 Mac OS X.

It's also possible that it has gotten into a real infinite loop. I'll  
take a look at it tomorrow.

Could you increase the stack limit on your system and see if that  
works around this problem?

Cheers,

Evan

On May 5, 2006, at 5:14 AM, Simon Burton wrote:

>
> Segfault in  EE->getPointerToFunction.
> I think it's blown the stack, gdb reports a never ending backtrace  
> (below).
>
> I generate llvm assembly and parse/verify OK.
> Attached is the assembly. It is the smallest example
> generated that causes the segfault.
>
> If this EE uses a recursive function (??), it seems an inherent  
> limitation
> in how big llvm functions can be.
>
> Simon.
>
> gdb backtrace:
> #0  0x40b126a3 in (anonymous  
> namespace)::X86DAGToDAGISel::Select_store(llvm::SDOperand&,  
> llvm::SDOperand) (this=0x822d660,
>     Result=@0xbf800a10, N={Val = 0x8254338, ResNo = 0}) at  
> X86GenDAGISel.inc:19768
> #1  0x40b01b44 in (anonymous namespace)::X86DAGToDAGISel::SelectCode 
> (llvm::SDOperand&, llvm::SDOperand) (this=0x822d660,
>     Result=@0xbf800a10, N={Val = 0x8254338, ResNo = 0}) at  
> X86GenDAGISel.inc:27833
> #2  0x40ada64f in (anonymous namespace)::X86DAGToDAGISel::Select 
> (llvm::SDOperand&, llvm::SDOperand) (this=0x822d660,
>     Result=@0xbf800a10, N={Val = 0x8254338, ResNo = 0}) at  
> X86ISelDAGToDAG.cpp:835
> #3  0x40b00bb4 in (anonymous namespace)::X86DAGToDAGISel::SelectCode 
> (llvm::SDOperand&, llvm::SDOperand) (this=0x822d660,
>     Result=@0xbf800d28, N={Val = 0x8254458, ResNo = 0}) at  
> X86GenDAGISel.inc:27686
> #4  0x40ada64f in (anonymous namespace)::X86DAGToDAGISel::Select 
> (llvm::SDOperand&, llvm::SDOperand) (this=0x822d660,
>     Result=@0xbf800d28, N={Val = 0x8254458, ResNo = 0}) at  
> X86ISelDAGToDAG.cpp:835
> #5  0x40b9886e in (anonymous  
> namespace)::X86DAGToDAGISel::Select_X86call(llvm::SDOperand&,  
> llvm::SDOperand) (
>     this=0x822d660, Result=@0xbf801098, N={Val = 0x82544d0, ResNo =  
> 0}) at X86GenDAGISel.inc:658
> #6  0x40b01391 in (anonymous namespace)::X86DAGToDAGISel::SelectCode 
> (llvm::SDOperand&, llvm::SDOperand) (this=0x822d660,
>     Result=@0xbf801098, N={Val = 0x82544d0, ResNo = 0}) at  
> X86GenDAGISel.inc:27760
> #7  0x40ada64f in (anonymous namespace)::X86DAGToDAGISel::Select 
> (llvm::SDOperand&, llvm::SDOperand) (this=0x822d660,
>     Result=@0xbf801098, N={Val = 0x82544d0, ResNo = 0}) at  
> X86ISelDAGToDAG.cpp:835
>
> etc....
>
> -- 
> Simon Burton, B.Sc.
> Licensed PO Box 8066
> ANU Canberra 2601
> Australia
> Ph. 61 02 6249 6940
> http://arrowtheory.com
> <dump.ll>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list