From: Misha Brukman Date: Mon, 22 Sep 2003 23:35:23 +0000 (+0000) Subject: Materialize the module before releasing it. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=fdf148ea71e7ff836f67497a0e18885434abdef6;p=oota-llvm.git Materialize the module before releasing it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8668 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ModuleProvider.h b/include/llvm/ModuleProvider.h index 19b0005ec5d..8ef74276574 100644 --- a/include/llvm/ModuleProvider.h +++ b/include/llvm/ModuleProvider.h @@ -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; + } };