From: Bill Wendling Date: Wed, 16 Oct 2013 08:59:57 +0000 (+0000) Subject: Add a 'deleteModule' method to the Linker class. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=b4a0ba17183e1b4aa385e81e896c2a95671a40b2;p=oota-llvm.git Add a 'deleteModule' method to the Linker class. 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 --- diff --git a/include/llvm/Linker.h b/include/llvm/Linker.h index 3667b8521d9..4f37459eb40 100644 --- a/include/llvm/Linker.h +++ b/include/llvm/Linker.h @@ -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. diff --git a/lib/LTO/LTOCodeGenerator.cpp b/lib/LTO/LTOCodeGenerator.cpp index e35e33666ec..88f606160d8 100644 --- a/lib/LTO/LTOCodeGenerator.cpp +++ b/lib/LTO/LTOCodeGenerator.cpp @@ -66,7 +66,10 @@ LTOCodeGenerator::LTOCodeGenerator() LTOCodeGenerator::~LTOCodeGenerator() { delete TargetMach; delete NativeObjectFile; - delete Linker.getModule(); + TargetMach = NULL; + NativeObjectFile = NULL; + + Linker.deleteModule(); for (std::vector::iterator I = CodegenOptions.begin(), E = CodegenOptions.end(); diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp index b343b1ce8f8..8f2200e4ea2 100644 --- a/lib/Linker/LinkModules.cpp +++ b/lib/Linker/LinkModules.cpp @@ -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()) {