OSDN Git Service

Teach the regular pass manager how to materialize functions as needed.
authorDan Gohman <gohman@apple.com>
Tue, 11 May 2010 19:58:43 +0000 (19:58 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 11 May 2010 19:58:43 +0000 (19:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103493 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/PassManager.cpp

index a56938c..6883e9f 100644 (file)
@@ -1444,8 +1444,16 @@ bool FPPassManager::runOnFunction(Function &F) {
 bool FPPassManager::runOnModule(Module &M) {
   bool Changed = doInitialization(M);
 
-  for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
+  for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) {
+    Function &F = *I;
+    if (F.isMaterializable()) {
+      std::string errstr;
+      if (F.Materialize(&errstr))
+        report_fatal_error("Error reading bitcode file: " + Twine(errstr));
+    }
+
     runOnFunction(*I);
+  }
 
   return doFinalization(M) || Changed;
 }