LLVM  4.0.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::PMDataManager Class Referenceabstract

PMDataManager provides the common place to manage the analysis data used by pass managers. More...

#include <LegacyPassManagers.h>

Inheritance diagram for llvm::PMDataManager:
[legend]
Collaboration diagram for llvm::PMDataManager:
[legend]

Public Member Functions

 PMDataManager ()
 
virtual ~PMDataManager ()
 
virtual PassgetAsPass ()=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 PassgetOnTheFlyPass (Pass *P, AnalysisID PI, Function &F)
 
void initializeAnalysisInfo ()
 Initialize available analysis information. More...
 
bool preserveHigherLevelAnalysis (Pass *P)
 
void collectRequiredAndUsedAnalyses (SmallVectorImpl< Pass * > &UsedPasses, SmallVectorImpl< AnalysisID > &ReqPassNotAvailable, Pass *P)
 Populate UsedPasses with analysis pass that are used or 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...
 
PassfindAnalysisPass (AnalysisID AID, bool Direction)
 Find the pass that implements Analysis AID. More...
 
PMTopLevelManagergetTopLevelManager ()
 
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
 
void dumpUsedSet (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

PMTopLevelManagerTPM
 
SmallVector< Pass *, 16 > PassVector
 
DenseMap< AnalysisID, Pass * > * InheritedAnalysis [PMT_Last]
 

Detailed Description

PMDataManager provides the common place to manage the analysis data used by pass managers.

Definition at line 303 of file LegacyPassManagers.h.

Constructor & Destructor Documentation

llvm::PMDataManager::PMDataManager ( )
inlineexplicit

Definition at line 305 of file LegacyPassManagers.h.

References initializeAnalysisInfo().

PMDataManager::~PMDataManager ( )
virtual

Definition at line 1251 of file LegacyPassManager.cpp.

References E, I, and PassVector.

Member Function Documentation

void PMDataManager::add ( Pass P,
bool  ProcessAnalysis = true 
)
void PMDataManager::addLowerLevelRequiredPass ( Pass P,
Pass RequiredPass 
)
virtual

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 1224 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::collectRequiredAndUsedAnalyses ( SmallVectorImpl< Pass * > &  UP,
SmallVectorImpl< AnalysisID > &  RP_NotAvail,
Pass P 
)

Populate UsedPasses with analysis pass that are used or required by pass P and are available.

Populate UP with analysis pass that are used or 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 1037 of file LegacyPassManager.cpp.

References findAnalysisPass(), llvm::PMTopLevelManager::findAnalysisUsage(), llvm::AnalysisUsage::getRequiredSet(), llvm::AnalysisUsage::getRequiredTransitiveSet(), llvm::AnalysisUsage::getUsedSet(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and TPM.

Referenced by add().

void PMDataManager::dumpLastUses ( Pass P,
unsigned  Offset 
) const
void PMDataManager::dumpPassArguments ( ) const
void PMDataManager::dumpPassInfo ( Pass P,
enum PassDebuggingString  S1,
enum PassDebuggingString  S2,
StringRef  Msg 
)
void PMDataManager::dumpPreservedSet ( const Pass P) const
void PMDataManager::dumpRequiredSet ( const Pass P) const
void PMDataManager::dumpUsedSet ( const Pass P) const
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 1083 of file LegacyPassManager.cpp.

References llvm::PMTopLevelManager::findAnalysisPass(), I, if(), and TPM.

Referenced by collectRequiredAndUsedAnalyses(), llvm::AnalysisResolver::getAnalysisIfAvailable(), initializeAnalysisImpl(), and verifyPreservedAnalysis().

void PMDataManager::freePass ( Pass P,
StringRef  Msg,
enum PassDebuggingString  DBG_STR 
)
virtual Pass* llvm::PMDataManager::getAsPass ( )
pure virtual
DenseMap<AnalysisID, Pass*>* llvm::PMDataManager::getAvailableAnalysis ( )
inline

Definition at line 394 of file LegacyPassManagers.h.

unsigned llvm::PMDataManager::getDepth ( ) const
inline
unsigned llvm::PMDataManager::getNumContainedPasses ( ) const
inline
Pass * PMDataManager::getOnTheFlyPass ( Pass P,
AnalysisID  PI,
Function F 
)
virtual

Definition at line 1246 of file LegacyPassManager.cpp.

References llvm_unreachable.

Referenced by llvm::AnalysisResolver::findImplPass().

virtual PassManagerType llvm::PMDataManager::getPassManagerType ( ) const
inlinevirtual
PMTopLevelManager* llvm::PMDataManager::getTopLevelManager ( )
inline

Definition at line 370 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 1064 of file LegacyPassManager.cpp.

References llvm::AnalysisResolver::addAnalysisImplsPair(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), E, 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().

void llvm::PMDataManager::initializeAnalysisInfo ( )
inline

Initialize available analysis information.

Definition at line 342 of file LegacyPassManagers.h.

References i, InheritedAnalysis, and llvm::PMT_Last.

Referenced by PMDataManager(), and llvm::PMStack::pop().

bool PMDataManager::isPassDebuggingExecutionsOrMore ( ) const
protected

isPassDebuggingExecutionsOrMore - Return true if -debug-pass=Executions or higher is specified.

Definition at line 126 of file LegacyPassManager.cpp.

References PassDebugging.

Referenced by llvm::RGPassManager::runOnFunction().

void llvm::PMDataManager::populateInheritedAnalysis ( PMStack PMS)
inline
bool PMDataManager::preserveHigherLevelAnalysis ( Pass P)
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 811 of file LegacyPassManager.cpp.

References assert(), llvm::PMTopLevelManager::findAnalysisPassInfo(), llvm::PassInfo::getInterfacesImplemented(), llvm::Pass::getPassID(), i, 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 910 of file LegacyPassManager.cpp.

References llvm::PMTopLevelManager::collectLastUses(), llvm::dbgs(), llvm::SmallVectorBase::empty(), freePass(), llvm::Pass::getPassName(), PassDebugging, and TPM.

Referenced by llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().

void PMDataManager::removeNotPreservedAnalysis ( Pass P)
void llvm::PMDataManager::setDepth ( unsigned  newDepth)
inline

Definition at line 374 of file LegacyPassManagers.h.

Referenced by llvm::PMStack::push().

void llvm::PMDataManager::setTopLevelManager ( PMTopLevelManager T)
inline
void PMDataManager::verifyPreservedAnalysis ( Pass P)

verifyPreservedAnalysis – Verify analysis presreved by pass P.

verifyPreservedAnalysis – Verify analysis preserved by pass P.

Definition at line 845 of file LegacyPassManager.cpp.

References findAnalysisPass(), llvm::PMTopLevelManager::findAnalysisUsage(), llvm::getPassTimer(), llvm::AnalysisUsage::getPreservedSet(), and TPM.

Referenced by llvm::RGPassManager::runOnFunction(), and llvm::LPPassManager::runOnFunction().

Member Data Documentation

DenseMap<AnalysisID, Pass *>* llvm::PMDataManager::InheritedAnalysis[PMT_Last]
protected
SmallVector<Pass *, 16> llvm::PMDataManager::PassVector
protected
PMTopLevelManager* llvm::PMDataManager::TPM
protected

The documentation for this class was generated from the following files: