minor cleanups. Add provisions for a new standard BLOCKINFO_BLOCK
[oota-llvm.git] / include / llvm / ModuleProvider.h
index b42a5036e5c4c79f388e4ef7ef0c6109113c065a..0a91cd1f01d7879d4930ded578f565822b334bae 100644 (file)
@@ -43,6 +43,13 @@ public:
   ///
   virtual bool materializeFunction(Function *F, std::string *ErrInfo = 0) = 0;
 
+  /// dematerializeFunction - If the given function is read in, and if the
+  /// module provider supports it, release the memory for the function, and set
+  /// it up to be materialized lazily.  If the provider doesn't support this
+  /// capability, this method is a noop.
+  ///
+  virtual void dematerializeFunction(Function *F) {}
+  
   /// materializeModule - make sure the entire Module has been completely read.
   /// On error, return null and fill in the error string if specified.
   ///
@@ -53,7 +60,7 @@ public:
   ///
   virtual Module* releaseModule(std::string *ErrInfo = 0) {
     // Since we're losing control of this Module, we must hand it back complete
-    if (materializeModule(ErrInfo))
+    if (!materializeModule(ErrInfo))
       return 0;
     Module *tempM = TheModule;
     TheModule = 0;