|
LLVM
3.7.0
|
PMDataManager provides the common place to manage the analysis data used by pass managers. More...
#include <LegacyPassManagers.h>
Public Member Functions | |
| PMDataManager () | |
| virtual | ~PMDataManager () |
| virtual Pass * | getAsPass ()=0 |
| 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) |
| Add pass P into the PassVector. More... | |
| virtual void | addLowerLevelRequiredPass (Pass *P, Pass *RequiredPass) |
| Add RequiredPass into list of lower level passes required by pass P. More... | |
| 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) |
| Populate RequiredPasses with analysis pass that are required by pass P and are available. More... | |
| void | initializeAnalysisImpl (Pass *P) |
| All Required analyses should be available to the pass as it runs! Here we fill in the AnalysisImpls member of the pass so that it can successfully use the getAnalysis() method to retrieve the implementations it needs. More... | |
| Pass * | findAnalysisPass (AnalysisID AID, bool Direction) |
| Find the pass that implements Analysis AID. More... | |
| 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 |
| virtual PassManagerType | getPassManagerType () const |
| DenseMap< AnalysisID, Pass * > * | getAvailableAnalysis () |
| void | populateInheritedAnalysis (PMStack &PMS) |
Protected Member Functions | |
| bool | isPassDebuggingExecutionsOrMore () const |
| isPassDebuggingExecutionsOrMore - Return true if -debug-pass=Executions or higher is specified. More... | |
Protected Attributes | |
| PMTopLevelManager * | TPM |
| SmallVector< Pass *, 16 > | PassVector |
| DenseMap< AnalysisID, Pass * > * | InheritedAnalysis [PMT_Last] |
PMDataManager provides the common place to manage the analysis data used by pass managers.
Definition at line 272 of file LegacyPassManagers.h.
|
inlineexplicit |
Definition at line 275 of file LegacyPassManagers.h.
References initializeAnalysisInfo().
|
virtual |
Definition at line 1260 of file LegacyPassManager.cpp.
References I, and PassVector.
Add pass P into the PassVector.
Update AvailableAnalysis appropriately if ProcessAnalysis is true.
Definition at line 974 of file LegacyPassManager.cpp.
References addLowerLevelRequiredPass(), llvm::SmallVectorTemplateCommon< T >::begin(), llvm::SmallVectorImpl< T >::clear(), collectRequiredAnalysis(), llvm::PassInfo::createPass(), llvm::SmallVectorBase::empty(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::PMTopLevelManager::findAnalysisPassInfo(), getAsPass(), llvm::Pass::getAsPMDataManager(), getDepth(), llvm::AnalysisResolver::getPMDataManager(), llvm::Pass::getResolver(), I, llvm_unreachable, PassVector, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), recordAvailableAnalysis(), removeNotPreservedAnalysis(), llvm::PMTopLevelManager::setLastUser(), llvm::Pass::setResolver(), and TPM.
Referenced by llvm::LoopPass::assignPassManager(), llvm::RegionPass::assignPassManager(), llvm::ModulePass::assignPassManager(), and llvm::FunctionPass::assignPassManager().
Add RequiredPass into list of lower level passes required by pass P.
RequiredPass is run on the fly by Pass Manager when P requests it through getAnalysis interface.
RequiredPass is run on the fly by Pass Manager when P requests it through getAnalysis interface. This should be handled by specific pass manager.
Definition at line 1233 of file LegacyPassManager.cpp.
References llvm::dbgs(), llvm::PMTopLevelManager::dumpArguments(), llvm::PMTopLevelManager::dumpPasses(), llvm::Pass::getPassName(), llvm_unreachable, and TPM.
Referenced by add().
| void PMDataManager::collectRequiredAnalysis | ( | SmallVectorImpl< Pass * > & | RP, |
| SmallVectorImpl< AnalysisID > & | RP_NotAvail, | ||
| Pass * | P | ||
| ) |
Populate RequiredPasses with analysis pass that are required by pass P and are available.
Populate RP with analysis pass that are required by pass P and are available.
Populate ReqPassNotAvailable with analysis pass that are required by pass P but are not available.
Populate RP_NotAvail with analysis pass that are required by pass P but are not available.
Definition at line 1054 of file LegacyPassManager.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), findAnalysisPass(), llvm::PMTopLevelManager::findAnalysisUsage(), llvm::AnalysisUsage::getRequiredSet(), llvm::AnalysisUsage::getRequiredTransitiveSet(), I, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), and TPM.
Referenced by add().
Definition at line 1117 of file LegacyPassManager.cpp.
References llvm::SmallVectorTemplateCommon< T >::begin(), llvm::PMTopLevelManager::collectLastUses(), llvm::dbgs(), llvm::SmallVectorTemplateCommon< T >::end(), I, and TPM.
Referenced by llvm::RGPassManager::dumpPassStructure(), and llvm::LPPassManager::dumpPassStructure().
| void PMDataManager::dumpPassArguments | ( | ) | const |
Definition at line 1134 of file LegacyPassManager.cpp.
References llvm::dbgs(), llvm::PMTopLevelManager::findAnalysisPassInfo(), I, PassVector, and TPM.
| void PMDataManager::dumpPassInfo | ( | Pass * | P, |
| enum PassDebuggingString | S1, | ||
| enum PassDebuggingString | S2, | ||
| StringRef | Msg | ||
| ) |
Definition at line 1147 of file LegacyPassManager.cpp.
References llvm::dbgs(), llvm::EXECUTION_MSG, llvm::FREEING_MSG, getDepth(), llvm::Pass::getPassName(), llvm::MODIFICATION_MSG, llvm::sys::TimeValue::now(), llvm::ON_BASICBLOCK_MSG, llvm::ON_CG_MSG, llvm::ON_FUNCTION_MSG, llvm::ON_LOOP_MSG, llvm::ON_MODULE_MSG, llvm::ON_REGION_MSG, PassDebugging, and llvm::sys::TimeValue::str().
Referenced by freePass(), llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().
Definition at line 1200 of file LegacyPassManager.cpp.
References llvm::Pass::getAnalysisUsage(), llvm::AnalysisUsage::getPreservedSet(), and PassDebugging.
Referenced by llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().
Definition at line 1191 of file LegacyPassManager.cpp.
References llvm::Pass::getAnalysisUsage(), llvm::AnalysisUsage::getRequiredSet(), and PassDebugging.
Referenced by llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().
| Pass * PMDataManager::findAnalysisPass | ( | AnalysisID | AID, |
| bool | SearchParent | ||
| ) |
Find the pass that implements Analysis AID.
If desired pass is not found then return NULL.
Definition at line 1101 of file LegacyPassManager.cpp.
References llvm::PMTopLevelManager::findAnalysisPass(), I, if(), and TPM.
Referenced by collectRequiredAnalysis(), llvm::AnalysisResolver::getAnalysisIfAvailable(), initializeAnalysisImpl(), and verifyPreservedAnalysis().
| void PMDataManager::freePass | ( | Pass * | P, |
| StringRef | Msg, | ||
| enum PassDebuggingString | DBG_STR | ||
| ) |
Remove P.
Definition at line 943 of file LegacyPassManager.cpp.
References dumpPassInfo(), llvm::PMTopLevelManager::findAnalysisPassInfo(), llvm::FREEING_MSG, llvm::Pass::getPassID(), llvm::getPassTimer(), P, llvm::Pass::releaseMemory(), TPM, and X.
Referenced by removeDeadPasses(), llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().
|
pure virtual |
Implemented in llvm::FPPassManager, llvm::legacy::PassManagerImpl, llvm::legacy::FunctionPassManagerImpl, llvm::LPPassManager, and llvm::RGPassManager.
Referenced by add(), and llvm::PMTopLevelManager::setLastUser().
|
inline |
Definition at line 364 of file LegacyPassManagers.h.
|
inline |
Definition at line 344 of file LegacyPassManagers.h.
Referenced by add(), dumpPassInfo(), llvm::PMStack::push(), and llvm::PMTopLevelManager::setLastUser().
|
inline |
Definition at line 355 of file LegacyPassManagers.h.
References PassVector.
Referenced by llvm::LPPassManager::cloneBasicBlockSimpleAnalysis(), llvm::LPPassManager::deleteSimpleAnalysisLoop(), llvm::LPPassManager::deleteSimpleAnalysisValue(), llvm::RGPassManager::dumpPassStructure(), llvm::LPPassManager::dumpPassStructure(), llvm::legacy::FunctionPassManagerImpl::releaseMemoryOnTheFly(), llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().
|
virtual |
Definition at line 1255 of file LegacyPassManager.cpp.
References llvm_unreachable.
Referenced by llvm::AnalysisResolver::findImplPass().
|
inlinevirtual |
Reimplemented in llvm::FPPassManager, llvm::LPPassManager, and llvm::RGPassManager.
Definition at line 359 of file LegacyPassManagers.h.
References llvm::PMT_Unknown.
Referenced by llvm::LoopPass::assignPassManager(), llvm::CallGraphSCCPass::assignPassManager(), llvm::RegionPass::assignPassManager(), llvm::ModulePass::assignPassManager(), llvm::FunctionPass::assignPassManager(), llvm::BasicBlockPass::assignPassManager(), llvm::LoopPass::preparePassManager(), llvm::RegionPass::preparePassManager(), and llvm::PMStack::push().
|
inline |
Definition at line 341 of file LegacyPassManagers.h.
References TPM.
| void PMDataManager::initializeAnalysisImpl | ( | Pass * | P | ) |
All Required analyses should be available to the pass as it runs! Here we fill in the AnalysisImpls member of the pass so that it can successfully use the getAnalysis() method to retrieve the implementations it needs.
Definition at line 1082 of file LegacyPassManager.cpp.
References llvm::AnalysisResolver::addAnalysisImplsPair(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), findAnalysisPass(), llvm::PMTopLevelManager::findAnalysisUsage(), llvm::AnalysisUsage::getRequiredSet(), llvm::Pass::getResolver(), I, and TPM.
Referenced by llvm::RGPassManager::runOnFunction(), llvm::LPPassManager::runOnFunction(), and llvm::PMTopLevelManager::schedulePass().
|
inline |
Initialize available analysis information.
Definition at line 312 of file LegacyPassManagers.h.
References InheritedAnalysis, and llvm::PMT_Last.
Referenced by PMDataManager(), and llvm::PMStack::pop().
|
protected |
isPassDebuggingExecutionsOrMore - Return true if -debug-pass=Executions or higher is specified.
Definition at line 114 of file LegacyPassManager.cpp.
References PassDebugging.
Referenced by llvm::RGPassManager::runOnFunction().
|
inline |
Definition at line 369 of file LegacyPassManagers.h.
References llvm::PMStack::begin(), llvm::PMStack::end(), I, and InheritedAnalysis.
Referenced by llvm::LoopPass::assignPassManager(), llvm::RegionPass::assignPassManager(), llvm::FunctionPass::assignPassManager(), llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().
Definition at line 832 of file LegacyPassManager.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::PMTopLevelManager::findAnalysisUsage(), llvm::Pass::getAsImmutablePass(), llvm::Pass::getPassID(), llvm::AnalysisUsage::getPreservedSet(), llvm::AnalysisUsage::getPreservesAll(), I, and TPM.
Referenced by llvm::LoopPass::preparePassManager(), and llvm::RegionPass::preparePassManager().
| void PMDataManager::recordAvailableAnalysis | ( | Pass * | P | ) |
Augment AvailableAnalysis by adding analysis made available by pass P.
Augement AvailableAnalysis by adding analysis made available by pass P.
Definition at line 814 of file LegacyPassManager.cpp.
References llvm::PMTopLevelManager::findAnalysisPassInfo(), llvm::PassInfo::getInterfacesImplemented(), llvm::Pass::getPassID(), P, and TPM.
Referenced by add(), llvm::RGPassManager::runOnFunction(), llvm::LPPassManager::runOnFunction(), and llvm::PMTopLevelManager::schedulePass().
| void PMDataManager::removeDeadPasses | ( | Pass * | P, |
| StringRef | Msg, | ||
| enum PassDebuggingString | DBG_STR | ||
| ) |
Remove dead passes used by P.
Remove analysis passes that are not used any longer.
Definition at line 921 of file LegacyPassManager.cpp.
References llvm::SmallVectorTemplateCommon< T >::begin(), llvm::PMTopLevelManager::collectLastUses(), llvm::dbgs(), llvm::SmallVectorBase::empty(), llvm::SmallVectorTemplateCommon< T >::end(), freePass(), llvm::Pass::getPassName(), I, PassDebugging, and TPM.
Referenced by llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().
| void PMDataManager::removeNotPreservedAnalysis | ( | Pass * | P | ) |
Remove Analysis that is not preserved by the pass.
Remove Analysis not preserved by Pass P.
Definition at line 872 of file LegacyPassManager.cpp.
References llvm::sys::path::begin(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::dbgs(), llvm::sys::path::end(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::PMTopLevelManager::findAnalysisUsage(), llvm::Pass::getPassName(), llvm::AnalysisUsage::getPreservedSet(), llvm::AnalysisUsage::getPreservesAll(), I, InheritedAnalysis, PassDebugging, llvm::PMT_Last, and TPM.
Referenced by add(), llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().
|
inline |
Definition at line 345 of file LegacyPassManagers.h.
Referenced by llvm::PMStack::push().
|
inline |
Definition at line 342 of file LegacyPassManagers.h.
Referenced by llvm::legacy::FunctionPassManager::FunctionPassManager(), llvm::legacy::PassManager::PassManager(), llvm::PMTopLevelManager::PMTopLevelManager(), and llvm::PMStack::push().
| void PMDataManager::verifyPreservedAnalysis | ( | Pass * | P | ) |
verifyPreservedAnalysis – Verify analysis presreved by pass P.
verifyPreservedAnalysis – Verify analysis preserved by pass P.
Definition at line 852 of file LegacyPassManager.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), findAnalysisPass(), llvm::PMTopLevelManager::findAnalysisUsage(), llvm::getPassTimer(), llvm::AnalysisUsage::getPreservedSet(), I, and TPM.
Referenced by llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().
|
protected |
Definition at line 387 of file LegacyPassManagers.h.
Referenced by initializeAnalysisInfo(), populateInheritedAnalysis(), and removeNotPreservedAnalysis().
|
protected |
Definition at line 382 of file LegacyPassManagers.h.
Referenced by add(), dumpPassArguments(), llvm::RGPassManager::getContainedPass(), llvm::LPPassManager::getContainedPass(), llvm::FPPassManager::getContainedPass(), getNumContainedPasses(), and ~PMDataManager().
|
protected |
Definition at line 379 of file LegacyPassManagers.h.
Referenced by add(), addLowerLevelRequiredPass(), collectRequiredAnalysis(), dumpLastUses(), dumpPassArguments(), findAnalysisPass(), freePass(), getTopLevelManager(), initializeAnalysisImpl(), preserveHigherLevelAnalysis(), recordAvailableAnalysis(), removeDeadPasses(), removeNotPreservedAnalysis(), llvm::RGPassManager::runOnFunction(), llvm::LPPassManager::runOnFunction(), setTopLevelManager(), and verifyPreservedAnalysis().
1.8.6