]> granicus.if.org Git - clang/commitdiff
2nd try to fix leakage of the module provider. note that moduleprovider takes ownersh...
authorNuno Lopes <nunoplopes@sapo.pt>
Fri, 24 Oct 2008 23:27:18 +0000 (23:27 +0000)
committerNuno Lopes <nunoplopes@sapo.pt>
Fri, 24 Oct 2008 23:27:18 +0000 (23:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58128 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/Backend.cpp

index 37c5f1651b08c9820e4b1640b5ff1f0e8ffea8bf..98cfeea380bce4dd1b2c92b3b03917ecb106cd8d 100644 (file)
@@ -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));
   }