From: Nuno Lopes Date: Fri, 24 Oct 2008 22:51:00 +0000 (+0000) Subject: fix leaking of the module provider X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dd49267500646992eaa2b194ef8122be22e18207;p=clang fix leaking of the module provider git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58127 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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)); }