diff options
author | Dan Gohman <gohman@apple.com> | 2010-05-11 19:58:43 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-05-11 19:58:43 +0000 |
commit | 860d669da2d56833c9fcb7c3feee5af5e7c197b4 (patch) | |
tree | e8d323492e2c780ae66cedccdd0704f4393291cb /llvm/lib/VMCore/PassManager.cpp | |
parent | 4cfccb801c7c6e13807703e1ef54ec387c6d512a (diff) | |
download | bcm5719-llvm-860d669da2d56833c9fcb7c3feee5af5e7c197b4.tar.gz bcm5719-llvm-860d669da2d56833c9fcb7c3feee5af5e7c197b4.zip |
Teach the regular pass manager how to materialize functions as needed.
llvm-svn: 103493
Diffstat (limited to 'llvm/lib/VMCore/PassManager.cpp')
-rw-r--r-- | llvm/lib/VMCore/PassManager.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/VMCore/PassManager.cpp b/llvm/lib/VMCore/PassManager.cpp index a56938c1592..6883e9f9b12 100644 --- a/llvm/lib/VMCore/PassManager.cpp +++ b/llvm/lib/VMCore/PassManager.cpp @@ -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; } |