[LLVMdev] Bug in x86 JIT fast emitter.

Mark Shannon marks at dcs.gla.ac.uk
Fri Jun 12 02:48:07 PDT 2009


Hi there,

I think I've found a bug in the x86 JIT. I get an assertion failure when 
using thread-local variables and the fast emitter.
It only happens with the JIT, the fast emiiter and thread-locals.
(The IR passes the verifier)

Here's the failure:

X86CodeEmitter.cpp:516: void<unnamed>::Emitter::emitInstruction(const 
llvm::MachineInstr&, const llvm::TargetInstrDesc*): Assertion `0 && 
"psuedo instructions should be removed before code emission"' failed.

There is a problem with submitting a bug-report, however.
Since llc has no trouble with thread-locals, I cannot actually generate 
the assertion failure, without my compiler-generator.
I can dump out the IR, but it is rather large.

So,
Is there a way to get llc to use the same emitter as the JIT, so that I
can produce a reasonably sized test-case.

I tried the -fast flag, but it compiles correctly.

Cheers,
Mark.



More information about the llvm-dev mailing list