[LLVMdev] Problem with the OCaml garbage collector interface and gcroot

Bill Wendling wendling at apple.com
Sun Feb 12 20:51:04 PST 2012


Hi Colin,

I wasn't able to reproduce the failure with top-of-tree. You might want to try that instead of llvm 3.0.

-bw

On Feb 10, 2012, at 1:25 PM, Colin Benner wrote:

> Hi all,
> 
> As part of my bachelor's thesis I'm trying to implement a new
> LLVM-based back end for the OCaml compiler.  Currently I have a
> problem with LLVM's interface to the OCaml garbage collector.  When I
> try to compile the attached program using llc I get the following
> stack dump:
> 
> 0  llc             0x00000000016611de
> 1  llc             0x00000000016616aa
> 2  libpthread.so.0 0x00007f90105fa270
> 3  llc             0x0000000000adb030 llvm::MachineFrameInfo::getObjectOffset(int) const + 32
> 4  llc             0x0000000000e73f1a llvm::X86FrameLowering::getFrameIndexOffset(llvm::MachineFunction const&, int) const + 74
> 5  llc             0x000000000119bed1
> 6  llc             0x000000000119bd1e
> 7  llc             0x00000000011e0dce llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 110
> 8  llc             0x000000000158e363 llvm::FPPassManager::runOnFunction(llvm::Function&) + 467
> 9  llc             0x000000000158e6ed llvm::FPPassManager::runOnModule(llvm::Module&) + 125
> 10 llc             0x000000000158e940 llvm::MPPassManager::runOnModule(llvm::Module&) + 496
> 11 llc             0x000000000158eefc llvm::PassManagerImpl::run(llvm::Module&) + 172
> 12 llc             0x000000000158f2f1 llvm::PassManager::run(llvm::Module&) + 33
> 13 llc             0x0000000000a32322 main + 3010
> 14 libc.so.6       0x00007f900f85738d __libc_start_main + 237
> 15 llc             0x0000000000a30c39
> Stack dump:
> 0.      Program arguments: llc testcase.ll
> 1.      Running pass 'Function Pass Manager' on module 'testcase.ll'.
> 2.      Running pass 'Analyze Machine Code For Garbage Collection' on function '@foo'
> 
> However, the problem goes away when I change the code in a few minor
> details.  For instance, changing the 15 in line 36 to pretty much
> everything except -16, -8, 1, 2, 3, 4, 8, 16 and 23 makes the problem
> disappear, as does switching lines 41 and 42 or changing just about
> any other literal in the code.
> 
> I'm using LLVM 3.0.  The host and target architecture is x86_64 but
> the same problem occures when targetting sparc and sparcv9, but none
> of the other architectures.
> 
> Any help would be appreciated.
> 
> Thanks,
> Colin Benner<testcase.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