Implement top level FunctionPassManager::run(Function &F)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32381 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel 2006-12-08 22:57:48 +00:00
parent a083e94f79
commit c475692c5e

View File

@ -401,6 +401,7 @@ public:
/// so, return true. /// so, return true.
bool runOnModule(Module &M); bool runOnModule(Module &M);
bool runOnFunction(Function &F); bool runOnFunction(Function &F);
bool run(Function &F);
/// doInitialization - Run all of the initializers for the function passes. /// 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"; cerr << "Error reading bytecode file: " << errstr << "\n";
abort(); abort();
} }
return FPM->runOnFunction(F); return FPM->run(F);
} }
@ -934,6 +935,19 @@ inline bool FunctionPassManagerImpl_New::doFinalization(Module &M) {
return Changed; 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 // ModulePassManager implementation