Materialize the module before releasing it.
authorMisha Brukman <brukman+llvm@gmail.com>
Mon, 22 Sep 2003 23:35:23 +0000 (23:35 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Mon, 22 Sep 2003 23:35:23 +0000 (23:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8668 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ModuleProvider.h

index 19b0005ec5d36a3bbd27fdd59b555ddd89207e66..8ef74276574ccf0b7ade3d5d31b1170bd9ca5bd2 100644 (file)
@@ -11,17 +11,16 @@ class Function;
 class Module;
 
 class AbstractModuleProvider {
-  Module *M;
-
 protected:
+  Module *TheModule;
   AbstractModuleProvider();
 
 public:
   virtual ~AbstractModuleProvider();
 
-  /// getModule - returns the module this provider is encapsulating
+  /// getModule - returns the module this provider is encapsulating.
   ///
-  Module* getModule() { return M; }
+  Module* getModule() { return TheModule; }
 
   /// materializeFunction - make sure the given function is fully read.
   ///
@@ -33,7 +32,13 @@ public:
 
   /// releaseModule - no longer delete the Module* when provider is destroyed.
   ///
-  Module* releaseModule() { Module *tempM = M; M = 0; return tempM; }
+  virtual Module* releaseModule() { 
+    // Since we're losing control of this Module, we must hand it back complete
+    materializeModule();
+    Module *tempM = TheModule; 
+    TheModule = 0; 
+    return tempM; 
+  }
 
 };