diff options
author | Nuno Lopes <nunoplopes@sapo.pt> | 2008-10-24 22:51:00 +0000 |
---|---|---|
committer | Nuno Lopes <nunoplopes@sapo.pt> | 2008-10-24 22:51:00 +0000 |
commit | dd49267500646992eaa2b194ef8122be22e18207 (patch) | |
tree | 749e0e8bdc4f33565063b6cd08fe6c2f1947424e | |
parent | 8dc53930ac5ec96e47ca15c1f5265a87e40da5ca (diff) |
fix leaking of the module provider
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58127 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | Driver/Backend.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Driver/Backend.cpp b/Driver/Backend.cpp index f8cfa997e2..37c5f1651b 100644 --- a/Driver/Backend.cpp +++ b/Driver/Backend.cpp @@ -52,6 +52,7 @@ namespace { llvm::TargetData *TheTargetData; llvm::raw_ostream *AsmOutStream; + mutable llvm::ModuleProvider *ModuleProvider; mutable FunctionPassManager *CodeGenPasses; mutable PassManager *PerModulePasses; mutable FunctionPassManager *PerFunctionPasses; @@ -81,7 +82,7 @@ namespace { InputFile(infile), OutputFile(outfile), Gen(CreateLLVMCodeGen(Diags, Features, InputFile, GenerateDebugInfo)), - TheModule(0), TheTargetData(0), AsmOutStream(0), + TheModule(0), TheTargetData(0), AsmOutStream(0), ModuleProvider(0), CodeGenPasses(0), PerModulePasses(0), PerFunctionPasses(0) {} ~BackendConsumer() { @@ -91,6 +92,7 @@ namespace { delete AsmOutStream; delete TheTargetData; delete TheModule; + delete ModuleProvider; delete CodeGenPasses; delete PerModulePasses; delete PerFunctionPasses; @@ -120,8 +122,8 @@ namespace { FunctionPassManager *BackendConsumer::getCodeGenPasses() const { if (!CodeGenPasses) { - CodeGenPasses = - new FunctionPassManager(new ExistingModuleProvider(TheModule)); + ModuleProvider = new ExistingModuleProvider(TheModule); + CodeGenPasses = new FunctionPassManager(ModuleProvider); CodeGenPasses->add(new TargetData(*TheTargetData)); } |