diff options
-rw-r--r-- | include/llvm/Linker.h | 2 | ||||
-rw-r--r-- | lib/LTO/LTOCodeGenerator.cpp | 5 | ||||
-rw-r--r-- | lib/Linker/LinkModules.cpp | 5 |
3 files changed, 11 insertions, 1 deletions
diff --git a/include/llvm/Linker.h b/include/llvm/Linker.h index 3667b8521d..4f37459eb4 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 e35e33666e..88f606160d 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<char *>::iterator I = CodegenOptions.begin(), E = CodegenOptions.end(); diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp index b343b1ce8f..8f2200e4ea 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()) { |