about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorBrian Anderson <andersrb@gmail.com>2011-05-14 00:48:51 -0400
committerBrian Anderson <andersrb@gmail.com>2011-05-14 00:48:51 -0400
commit1ad58d4dd6fb40e0833a094799717cc2b17fefc6 (patch)
tree18f56b43adfbf6267b185432dbdb21db600dbeed /src/rustllvm/RustWrapper.cpp
parentaaf41815b1bd9d9474307f0b7e1d553500a63ecc (diff)
downloadrust-1ad58d4dd6fb40e0833a094799717cc2b17fefc6.tar.gz
rust-1ad58d4dd6fb40e0833a094799717cc2b17fefc6.zip
rustllvm: Free TargetMachine in LLVMRustWriteOutputFile
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
-rw-r--r--src/rustllvm/RustWrapper.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
index 2a3d8aeb79e..2c50a6ccfa7 100644
--- a/src/rustllvm/RustWrapper.cpp
+++ b/src/rustllvm/RustWrapper.cpp
@@ -90,7 +90,7 @@ extern "C" void LLVMRustWriteOutputFile(LLVMPassManagerRef PMR,
   std::string Err;
   const Target *TheTarget = TargetRegistry::lookupTarget(triple, Err);
   std::string FeaturesStr;
-  TargetMachine &Target = *TheTarget->createTargetMachine(triple, FeaturesStr);
+  TargetMachine *Target = TheTarget->createTargetMachine(triple, FeaturesStr);
   bool NoVerify = false;
   CodeGenOpt::Level OLvl = CodeGenOpt::Default;
   PassManager *PM = unwrap<PassManager>(PMR);
@@ -101,10 +101,11 @@ extern "C" void LLVMRustWriteOutputFile(LLVMPassManagerRef PMR,
   TargetMachine::CodeGenFileType FileType2 =
     static_cast<TargetMachine::CodeGenFileType>(FileType);
 
-  bool foo = Target.addPassesToEmitFile(*PM, FOS, FileType2, OLvl, NoVerify);
+  bool foo = Target->addPassesToEmitFile(*PM, FOS, FileType2, OLvl, NoVerify);
   assert(!foo);
   (void)foo;
   PM->run(*unwrap(M));
+  delete Target;
 }
 
 extern "C" LLVMModuleRef LLVMRustParseBitcode(LLVMMemoryBufferRef MemBuf) {