]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - opencl/llvm.git/commitdiff
Add a 'deleteModule' method to the Linker class.
authorBill Wendling <isanbard@gmail.com>
Wed, 16 Oct 2013 08:59:57 +0000 (08:59 +0000)
committerBill Wendling <isanbard@gmail.com>
Wed, 16 Oct 2013 08:59:57 +0000 (08:59 +0000)
This deletes the Module ivar instead of having the LTO code generater do it. It
also sets the pointer to 'NULL', so that if it's used again it will abort
quickly.

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

include/llvm/Linker.h
lib/LTO/LTOCodeGenerator.cpp
lib/Linker/LinkModules.cpp

index 3667b8521d90c5c8e482e9f3f4f84e4f9e4e764a..4f37459eb403f38a8f85a82b0844fbaa799f32e2 100644 (file)
@@ -32,7 +32,9 @@ class Linker {
 
     Linker(Module *M);
     ~Linker();
+
     Module *getModule() const { return Composite; }
+    void deleteModule();
 
     /// \brief Link \p Src into the composite. The source is destroyed if
     /// \p Mode is DestroySource and preserved if it is PreserveSource.
index e35e33666ecb357c9d23543db70545e46c57b35b..88f606160d8d949ed43f9bb0bed3166a110bbbcf 100644 (file)
@@ -66,7 +66,10 @@ LTOCodeGenerator::LTOCodeGenerator()
 LTOCodeGenerator::~LTOCodeGenerator() {
   delete TargetMach;
   delete NativeObjectFile;
-  delete Linker.getModule();
+  TargetMach = NULL;
+  NativeObjectFile = NULL;
+
+  Linker.deleteModule();
 
   for (std::vector<char *>::iterator I = CodegenOptions.begin(),
                                      E = CodegenOptions.end();
index b343b1ce8f84dfcb1feeefbf259c76e769a1f7dd..8f2200e4ea2e88572de5d64bc96f883e0cb3eb71 100644 (file)
@@ -1352,6 +1352,11 @@ Linker::Linker(Module *M) : Composite(M) {
 Linker::~Linker() {
 }
 
+void Linker::deleteModule() {
+  delete Composite;
+  Composite = NULL;
+}
+
 bool Linker::linkInModule(Module *Src, unsigned Mode, std::string *ErrorMsg) {
   ModuleLinker TheLinker(Composite, IdentifiedStructTypes, Src, Mode);
   if (TheLinker.run()) {