[LLVMdev] boost shared pointer & llvm

Vladimir Prus vladimir at codesourcery.com
Tue Jul 21 04:54:20 PDT 2009


Stefan Weigert wrote:

> hi,
> 
> when using the execution engine (no matter, if JIT or Interpreter) i get the
> following assertion as soon as i use boost::shared_ptr:
> 
> /build/buildd/llvm-2.5/lib/Target/X86/X86CodeEmitter.cpp:522:
> void<unnamed>::Emitter::emitInstruction(const llvm::MachineInstr&, const
> llvm::TargetInstrDesc*): Assertion `0 && "JIT does not support inline asm!\n"'
> failed.
> 
> how can i find out which instruction is executed at this point or in which
> function we are currently?
> 
> i also attached a very small example, which triggers the assertion when run
> with lli.

I do not know if there's general mechanism in LLVM to answer your question,
but you probably don't even need that.

1. Compiling with -save-temps will give you a preprocessed source, and you can
grep it for "asm".

2. The assembler most likely comes from boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp.
Defining either BOOST_SP_DISABLE_THREAD, or BOOST_SP_USE_PTHREADS will work around
this problem.

- Volodya




More information about the llvm-dev mailing list