aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNuno Lopes <nunoplopes@sapo.pt>2008-10-24 23:27:18 +0000
committerNuno Lopes <nunoplopes@sapo.pt>2008-10-24 23:27:18 +0000
commit7d43a3183211a2ebaaa0e290e6797ec9471f3324 (patch)
treea4560d4044bd99c303aa6d93a0c601e4e856540b
parentdd49267500646992eaa2b194ef8122be22e18207 (diff)
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
-rw-r--r--Driver/Backend.cpp6
1 files changed, 2 insertions, 4 deletions
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));
}