[LLVMdev] bug in the JIT global variable emitter

Nuno Lopes nunoplopes at sapo.pt
Mon Oct 13 14:42:21 PDT 2008


Today I found a nice bug in the JIT global variable emitter.
The problem may lead to an assert() failure when doing the following:
1) compile some function
2) emit a global variable
3) compile another function. an assert() may trigger in the JIT memory 

This happens because the JIT global variable emitter is using the 
MachineCodeEmitter::allocate() function, which uses memory allocated by the 
JIT memory manager (which should be used for functions only). The assert() 
is triggered because the global variable is dumped to the header of the free 
blocks list (provided that ThisAllocated becomes 1).

My proposed patch: 
http://web.ist.utl.pt/nuno.lopes/llvm_jit_global_emitter.txt (similar to 
what other JIT variable emitters do).

Please comment.


More information about the llvm-dev mailing list