From: Nuno Lopes Date: Fri, 24 Oct 2008 23:27:18 +0000 (+0000) Subject: 2nd try to fix leakage of the module provider. note that moduleprovider takes ownersh... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7d43a3183211a2ebaaa0e290e6797ec9471f3324;p=clang 2nd try to fix leakage of the module provider. note that moduleprovider takes ownership of the module git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58128 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Driver/Backend.cpp b/Driver/Backend.cpp index 37c5f1651b..98cfeea380 100644 --- a/Driver/Backend.cpp +++ b/Driver/Backend.cpp @@ -91,7 +91,6 @@ namespace { delete AsmOutStream; delete TheTargetData; - delete TheModule; delete ModuleProvider; delete CodeGenPasses; delete PerModulePasses; @@ -102,6 +101,7 @@ namespace { Gen->InitializeTU(TU); TheModule = Gen->GetModule(); + ModuleProvider = new ExistingModuleProvider(TheModule); TheTargetData = new llvm::TargetData(TU.getContext().Target.getTargetDescription()); } @@ -122,7 +122,6 @@ namespace { FunctionPassManager *BackendConsumer::getCodeGenPasses() const { if (!CodeGenPasses) { - ModuleProvider = new ExistingModuleProvider(TheModule); CodeGenPasses = new FunctionPassManager(ModuleProvider); CodeGenPasses->add(new TargetData(*TheTargetData)); } @@ -141,8 +140,7 @@ PassManager *BackendConsumer::getPerModulePasses() const { FunctionPassManager *BackendConsumer::getPerFunctionPasses() const { if (!PerFunctionPasses) { - PerFunctionPasses = - new FunctionPassManager(new ExistingModuleProvider(TheModule)); + PerFunctionPasses = new FunctionPassManager(ModuleProvider); PerFunctionPasses->add(new TargetData(*TheTargetData)); }