Plug a leak when using MCJIT.
authorBenjamin Kramer <benny.kra@googlemail.com>
Sun, 20 May 2012 17:24:08 +0000 (17:24 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Sun, 20 May 2012 17:24:08 +0000 (17:24 +0000)
Found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157160 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/LLVMTargetMachine.cpp
tools/lli/lli.cpp

index 313d362d94e45311070c1c39d07339e4c017b420..30963a2ea90391b09e685fd9da114677e3c26032 100644 (file)
@@ -273,7 +273,7 @@ bool LLVMTargetMachine::addPassesToEmitMC(PassManagerBase &PM,
 
   // Create the code emitter for the target if it exists.  If not, .o file
   // emission fails.
-  const MCRegisterInfo &MRI = *getTarget().createMCRegInfo(getTargetTriple());
+  const MCRegisterInfo &MRI = *getRegisterInfo();
   const MCSubtargetInfo &STI = getSubtarget<MCSubtargetInfo>();
   MCCodeEmitter *MCE = getTarget().createMCCodeEmitter(*getInstrInfo(), MRI,
                                                        STI, *Ctx);
index 7f7c37f50e2008b36059b21110ad97f237ef00d9..b6c9299c65b58314df7827fb30ff0254abd11ff1 100644 (file)
@@ -419,8 +419,6 @@ int main(int argc, char **argv, char * const *envp) {
   builder.setRelocationModel(RelocModel);
   builder.setCodeModel(CMModel);
   builder.setErrorStr(&ErrorMsg);
-  builder.setJITMemoryManager(ForceInterpreter ? 0 :
-                              JITMemoryManager::CreateDefaultMemManager());
   builder.setEngineKind(ForceInterpreter
                         ? EngineKind::Interpreter
                         : EngineKind::JIT);
@@ -435,6 +433,9 @@ int main(int argc, char **argv, char * const *envp) {
     builder.setUseMCJIT(true);
     JMM = new LLIMCJITMemoryManager();
     builder.setJITMemoryManager(JMM);
+  } else {
+    builder.setJITMemoryManager(ForceInterpreter ? 0 :
+                                JITMemoryManager::CreateDefaultMemManager());
   }
 
   CodeGenOpt::Level OLvl = CodeGenOpt::Default;