LLVM API Documentation
#include <LoopPass.h>
Public Member Functions | |
LPPassManager () | |
bool | runOnFunction (Function &F) |
void | getAnalysisUsage (AnalysisUsage &Info) const |
Pass Manager itself does not invalidate any analysis info. More... | |
virtual const char * | getPassName () const |
virtual PMDataManager * | getAsPMDataManager () |
virtual Pass * | getAsPass () |
void | dumpPassStructure (unsigned Offset) |
Print passes managed by this manager. More... | |
LoopPass * | getContainedPass (unsigned N) |
virtual PassManagerType | getPassManagerType () const |
void | deleteLoopFromQueue (Loop *L) |
Delete loop from the loop queue and loop hierarchy (LoopInfo). More... | |
void | insertLoop (Loop *L, Loop *ParentLoop) |
void | insertLoopIntoQueue (Loop *L) |
void | redoLoop (Loop *L) |
void | cloneBasicBlockSimpleAnalysis (BasicBlock *From, BasicBlock *To, Loop *L) |
void | deleteSimpleAnalysisValue (Value *V, Loop *L) |
deleteSimpleAnalysisValue - Invoke deleteAnalysisValue hook for all passes. More... | |
![]() | |
FunctionPass (char &pid) | |
Pass * | createPrinterPass (raw_ostream &O, const std::string &Banner) const |
createPrinterPass - Get a function printer pass. More... | |
virtual void | assignPassManager (PMStack &PMS, PassManagerType T) |
virtual PassManagerType | getPotentialPassManagerType () const |
Return what kind of Pass Manager can manage this pass. More... | |
![]() | |
Pass (PassKind K, char &pid) | |
virtual | ~Pass () |
PassKind | getPassKind () const |
AnalysisID | getPassID () const |
getPassID - Return the PassID number that corresponds to this pass. More... | |
virtual bool | doInitialization (Module &) |
virtual bool | doFinalization (Module &) |
virtual void | print (raw_ostream &O, const Module *M) const |
void | dump () const |
virtual void | preparePassManager (PMStack &) |
Check if available pass managers are suitable for this pass or not. More... | |
void | setResolver (AnalysisResolver *AR) |
AnalysisResolver * | getResolver () const |
virtual void | releaseMemory () |
virtual void * | getAdjustedAnalysisPointer (AnalysisID ID) |
virtual ImmutablePass * | getAsImmutablePass () |
virtual void | verifyAnalysis () const |
template<typename AnalysisType > | |
AnalysisType * | getAnalysisIfAvailable () const |
bool | mustPreserveAnalysisID (char &AID) const |
template<typename AnalysisType > | |
AnalysisType & | getAnalysis () const |
template<typename AnalysisType > | |
AnalysisType & | getAnalysis (Function &F) |
template<typename AnalysisType > | |
AnalysisType & | getAnalysisID (AnalysisID PI) const |
template<typename AnalysisType > | |
AnalysisType & | getAnalysisID (AnalysisID PI, Function &F) |
![]() | |
PMDataManager () | |
virtual | ~PMDataManager () |
void | recordAvailableAnalysis (Pass *P) |
Augment AvailableAnalysis by adding analysis made available by pass P. More... | |
void | verifyPreservedAnalysis (Pass *P) |
verifyPreservedAnalysis – Verify analysis presreved by pass P. More... | |
void | removeNotPreservedAnalysis (Pass *P) |
Remove Analysis that is not preserved by the pass. More... | |
void | removeDeadPasses (Pass *P, StringRef Msg, enum PassDebuggingString) |
Remove dead passes used by P. More... | |
void | freePass (Pass *P, StringRef Msg, enum PassDebuggingString) |
Remove P. More... | |
void | add (Pass *P, bool ProcessAnalysis=true) |
virtual void | addLowerLevelRequiredPass (Pass *P, Pass *RequiredPass) |
virtual Pass * | getOnTheFlyPass (Pass *P, AnalysisID PI, Function &F) |
void | initializeAnalysisInfo () |
Initialize available analysis information. More... | |
bool | preserveHigherLevelAnalysis (Pass *P) |
void | collectRequiredAnalysis (SmallVectorImpl< Pass * > &RequiredPasses, SmallVectorImpl< AnalysisID > &ReqPassNotAvailable, Pass *P) |
void | initializeAnalysisImpl (Pass *P) |
Pass * | findAnalysisPass (AnalysisID AID, bool Direction) |
PMTopLevelManager * | getTopLevelManager () |
void | setTopLevelManager (PMTopLevelManager *T) |
unsigned | getDepth () const |
void | setDepth (unsigned newDepth) |
void | dumpLastUses (Pass *P, unsigned Offset) const |
void | dumpPassArguments () const |
void | dumpPassInfo (Pass *P, enum PassDebuggingString S1, enum PassDebuggingString S2, StringRef Msg) |
void | dumpRequiredSet (const Pass *P) const |
void | dumpPreservedSet (const Pass *P) const |
unsigned | getNumContainedPasses () const |
DenseMap< AnalysisID, Pass * > * | getAvailableAnalysis () |
void | populateInheritedAnalysis (PMStack &PMS) |
Static Public Attributes | |
static char | ID = 0 |
Additional Inherited Members | |
![]() | |
static const PassInfo * | lookupPassInfo (const void *TI) |
static const PassInfo * | lookupPassInfo (StringRef Arg) |
static Pass * | createPass (AnalysisID ID) |
![]() | |
bool | isPassDebuggingExecutionsOrMore () const |
![]() | |
PMTopLevelManager * | TPM |
SmallVector< Pass *, 16 > | PassVector |
DenseMap< AnalysisID, Pass * > * | InheritedAnalysis [PMT_Last] |
Definition at line 86 of file LoopPass.h.
|
explicit |
Definition at line 60 of file LoopPass.cpp.
void LPPassManager::cloneBasicBlockSimpleAnalysis | ( | BasicBlock * | From, |
BasicBlock * | To, | ||
Loop * | L | ||
) |
SimpleAnalysis - Provides simple interface to update analysis info maintained by various passes. Note, if required this interface can be extracted into a separate abstract class but it would require additional use of multiple inheritance in Pass class hierarchy, something we are trying to avoid. cloneBasicBlockSimpleAnalysis - Invoke cloneBasicBlockAnalysis hook for all passes that implement simple analysis interface.
cloneBasicBlockSimpleAnalysis - Invoke cloneBasicBlockAnalysis hook for all loop passes.
Definition at line 138 of file LoopPass.cpp.
References llvm::LoopPass::cloneBasicBlockAnalysis(), getContainedPass(), and llvm::PMDataManager::getNumContainedPasses().
void LPPassManager::deleteLoopFromQueue | ( | Loop * | L | ) |
Delete loop from the loop queue and loop hierarchy (LoopInfo).
Definition at line 69 of file LoopPass.cpp.
References I, and llvm::LoopInfo::updateUnloop().
Referenced by llvm::UnrollLoop().
deleteSimpleAnalysisValue - Invoke deleteAnalysisValue hook for all passes.
deleteSimpleAnalysisValue - Invoke deleteAnalysisValue hook for all passes that implement simple analysis interface.
Definition at line 147 of file LoopPass.cpp.
References llvm::LoopPass::deleteAnalysisValue(), getContainedPass(), llvm::PMDataManager::getNumContainedPasses(), and I.
Referenced by ReplaceUsesOfWith().
|
virtual |
Print passes managed by this manager.
Reimplemented from llvm::Pass.
Definition at line 294 of file LoopPass.cpp.
References llvm::PMDataManager::dumpLastUses(), llvm::Pass::dumpPassStructure(), llvm::errs(), getContainedPass(), llvm::PMDataManager::getNumContainedPasses(), llvm::raw_ostream::indent(), and P.
|
virtual |
Pass Manager itself does not invalidate any analysis info.
Reimplemented from llvm::Pass.
Definition at line 170 of file LoopPass.cpp.
References llvm::AnalysisUsage::addRequired(), and llvm::AnalysisUsage::setPreservesAll().
|
inlinevirtual |
Implements llvm::PMDataManager.
Definition at line 104 of file LoopPass.h.
Referenced by llvm::LoopPass::assignPassManager(), and llvm::UnrollRuntimeLoopProlog().
|
inlinevirtual |
Reimplemented from llvm::Pass.
Definition at line 103 of file LoopPass.h.
Definition at line 109 of file LoopPass.h.
References N, and llvm::PMDataManager::PassVector.
Referenced by cloneBasicBlockSimpleAnalysis(), deleteSimpleAnalysisValue(), dumpPassStructure(), and runOnFunction().
|
inlinevirtual |
Reimplemented from llvm::PMDataManager.
Definition at line 115 of file LoopPass.h.
References llvm::PMT_LoopPassManager.
|
inlinevirtual |
getPassName - Return a nice clean name for a pass. This usually implemented in terms of the name that is registered by one of the Registration templates, but can be overloaded directly.
Reimplemented from llvm::Pass.
Definition at line 99 of file LoopPass.h.
Definition at line 94 of file LoopPass.cpp.
References llvm::LoopBase< N, M >::addChildLoop(), llvm::LoopInfo::addTopLevelLoop(), and insertLoopIntoQueue().
Referenced by CloneLoop().
void LPPassManager::insertLoopIntoQueue | ( | Loop * | L | ) |
Definition at line 107 of file LoopPass.cpp.
References llvm::LoopBase< N, M >::getParentLoop(), I, and redoLoop().
Referenced by insertLoop().
void LPPassManager::redoLoop | ( | Loop * | L | ) |
Definition at line 131 of file LoopPass.cpp.
Referenced by insertLoopIntoQueue().
run - Execute all of the passes scheduled for execution. Keep track of whether any of the passes modifies the module, and if so, return true.
run - Execute all of the passes scheduled for execution. Keep track of whether any of the passes modifies the function, and if so, return true.
Implements llvm::FunctionPass.
Definition at line 179 of file LoopPass.cpp.
References llvm::PMTopLevelManager::activeStack, addLoopIntoQueue(), llvm::LoopPass::doFinalization(), llvm::LoopPass::doInitialization(), llvm::PMDataManager::dumpPassInfo(), llvm::PMDataManager::dumpPreservedSet(), llvm::PMDataManager::dumpRequiredSet(), llvm::EXECUTION_MSG, llvm::PMDataManager::freePass(), getContainedPass(), llvm::LoopBase< N, M >::getHeader(), llvm::PMDataManager::getNumContainedPasses(), llvm::getPassTimer(), I, llvm::PMDataManager::initializeAnalysisImpl(), llvm::MODIFICATION_MSG, llvm::ON_LOOP_MSG, P, llvm::PMDataManager::populateInheritedAnalysis(), llvm::LoopInfo::rbegin(), llvm::PMDataManager::recordAvailableAnalysis(), llvm::PMDataManager::removeDeadPasses(), llvm::PMDataManager::removeNotPreservedAnalysis(), llvm::LoopInfo::rend(), llvm::LoopPass::runOnLoop(), llvm::PMDataManager::TPM, llvm::LoopBase< N, M >::verifyLoop(), llvm::PMDataManager::verifyPreservedAnalysis(), and llvm::X.
|
static |
Definition at line 88 of file LoopPass.h.