From 84ffc223f169cc584852b263ed906d6864a6f85c Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 6 Mar 2007 16:59:03 +0000 Subject: LPPassManager : Add initialization and finalizatino hooks. llvm-svn: 34968 --- llvm/lib/Analysis/LoopPass.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'llvm/lib/Analysis/LoopPass.cpp') diff --git a/llvm/lib/Analysis/LoopPass.cpp b/llvm/lib/Analysis/LoopPass.cpp index fe1672a4037..8d613b09f42 100644 --- a/llvm/lib/Analysis/LoopPass.cpp +++ b/llvm/lib/Analysis/LoopPass.cpp @@ -57,6 +57,18 @@ bool LPPassManager::runOnFunction(Function &F) { for (LoopInfo::iterator I = LI.begin(), E = LI.end(); I != E; ++I) addLoopIntoQueue(*I, LQ); + // Initialization + for (std::deque::const_iterator I = LQ.begin(), E = LQ.end(); + I != E; ++I) { + Loop *L = *I; + for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { + Pass *P = getContainedPass(Index); + LoopPass *LP = dynamic_cast(P); + if (LP) + Changed |= LP->doInitialization(L, *this); + } + } + // Walk Loops while (!LQ.empty()) { @@ -101,6 +113,14 @@ bool LPPassManager::runOnFunction(Function &F) { if (redoThisLoop) LQ.push_back(L); } + + // Finalization + for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { + Pass *P = getContainedPass(Index); + LoopPass *LP = dynamic_cast (P); + if (LP) + Changed |= LP->doFinalization(); + } return Changed; } -- cgit v1.2.3