diff options
| author | Devang Patel <dpatel@apple.com> | 2006-12-08 22:57:48 +0000 |
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2006-12-08 22:57:48 +0000 |
| commit | 272908dcf2b39c25dda7ea0d491dca9027aee49c (patch) | |
| tree | f1526324bf7dec0067dd431f4ee0e53cd55d1c07 | |
| parent | 5bbeb4913075d0020f063c60875b5e602a96418a (diff) | |
| download | bcm5719-llvm-272908dcf2b39c25dda7ea0d491dca9027aee49c.tar.gz bcm5719-llvm-272908dcf2b39c25dda7ea0d491dca9027aee49c.zip | |
Implement top level FunctionPassManager::run(Function &F)
llvm-svn: 32381
| -rw-r--r-- | llvm/lib/VMCore/PassManager.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/llvm/lib/VMCore/PassManager.cpp b/llvm/lib/VMCore/PassManager.cpp index 5c9da43b867..3207ef2a3f5 100644 --- a/llvm/lib/VMCore/PassManager.cpp +++ b/llvm/lib/VMCore/PassManager.cpp @@ -401,6 +401,7 @@ public: /// so, return true. bool runOnModule(Module &M); bool runOnFunction(Function &F); + bool run(Function &F); /// doInitialization - Run all of the initializers for the function passes. /// @@ -800,7 +801,7 @@ bool FunctionPassManager_New::run(Function &F) { cerr << "Error reading bytecode file: " << errstr << "\n"; abort(); } - return FPM->runOnFunction(F); + return FPM->run(F); } @@ -934,6 +935,19 @@ inline bool FunctionPassManagerImpl_New::doFinalization(Module &M) { return Changed; } +// Execute all the passes managed by this top level manager. +// Return true if any function is modified by a pass. +bool FunctionPassManagerImpl_New::run(Function &F) { + + bool Changed = false; + for (std::vector<Pass *>::iterator I = passManagersBegin(), + E = passManagersEnd(); I != E; ++I) { + FunctionPass *FP = dynamic_cast<FunctionPass *>(*I); + Changed |= FP->runOnFunction(F); + } + return Changed; +} + //===----------------------------------------------------------------------===// // ModulePassManager implementation |

