LLVM 22.0.0git
|
The pass manager to schedule RegionPasses. More...
#include "llvm/Analysis/RegionPass.h"
Public Member Functions | |
RGPassManager () | |
bool | runOnFunction (Function &F) override |
Execute all of the passes scheduled for execution. | |
void | getAnalysisUsage (AnalysisUsage &Info) const override |
Pass Manager itself does not invalidate any analysis info. | |
StringRef | getPassName () const override |
getPassName - Return a nice clean name for a pass. | |
PMDataManager * | getAsPMDataManager () override |
Pass * | getAsPass () override |
void | dumpPassStructure (unsigned Offset) override |
Print passes managed by this manager. | |
Pass * | getContainedPass (unsigned N) |
Get passes contained by this manager. | |
PassManagerType | getPassManagerType () const override |
Public Member Functions inherited from llvm::FunctionPass | |
FunctionPass (char &pid) | |
Pass * | createPrinterPass (raw_ostream &OS, const std::string &Banner) const override |
createPrinterPass - Get a function printer pass. | |
void | assignPassManager (PMStack &PMS, PassManagerType T) override |
Find appropriate Function Pass Manager or Call Graph Pass Manager in the PM Stack and add self into that manager. | |
PassManagerType | getPotentialPassManagerType () const override |
Return what kind of Pass Manager can manage this pass. | |
Public Member Functions inherited from llvm::Pass | |
Pass (PassKind K, char &pid) | |
Pass (const Pass &)=delete | |
Pass & | operator= (const Pass &)=delete |
virtual | ~Pass () |
PassKind | getPassKind () const |
StringRef | getPassArgument () const |
Return a nice clean name for a pass corresponding to that used to enable the pass in opt. | |
AnalysisID | getPassID () const |
getPassID - Return the PassID number that corresponds to this pass. | |
virtual bool | doInitialization (Module &) |
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before any pass is run. | |
virtual bool | doFinalization (Module &) |
doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes have run. | |
virtual void | print (raw_ostream &OS, const Module *M) const |
print - Print out the internal state of the pass. | |
void | dump () const |
virtual void | preparePassManager (PMStack &) |
Check if available pass managers are suitable for this pass or not. | |
void | setResolver (AnalysisResolver *AR) |
AnalysisResolver * | getResolver () const |
virtual void | releaseMemory () |
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memory when it is no longer needed. | |
virtual ImmutablePass * | getAsImmutablePass () |
virtual void | verifyAnalysis () const |
verifyAnalysis() - This member can be implemented by a analysis pass to check state of analysis information. | |
template<typename AnalysisType> | |
AnalysisType * | getAnalysisIfAvailable () const |
getAnalysisIfAvailable<AnalysisType>() - Subclasses use this function to get analysis information that might be around, for example to update it. | |
bool | mustPreserveAnalysisID (char &AID) const |
mustPreserveAnalysisID - This method serves the same function as getAnalysisIfAvailable, but works if you just have an AnalysisID. | |
template<typename AnalysisType> | |
AnalysisType & | getAnalysis () const |
getAnalysis<AnalysisType>() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
template<typename AnalysisType> | |
AnalysisType & | getAnalysis (Function &F, bool *Changed=nullptr) |
getAnalysis<AnalysisType>() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
template<typename AnalysisType> | |
AnalysisType & | getAnalysisID (AnalysisID PI) const |
template<typename AnalysisType> | |
AnalysisType & | getAnalysisID (AnalysisID PI, Function &F, bool *Changed=nullptr) |
Public Member Functions inherited from llvm::PMDataManager | |
PMDataManager () | |
virtual | ~PMDataManager () |
void | recordAvailableAnalysis (Pass *P) |
Augment AvailableAnalysis by adding analysis made available by pass P. | |
void | verifyPreservedAnalysis (Pass *P) |
verifyPreservedAnalysis – Verify analysis presreved by pass P. | |
void | removeNotPreservedAnalysis (Pass *P) |
Remove Analysis that is not preserved by the pass. | |
void | removeDeadPasses (Pass *P, StringRef Msg, enum PassDebuggingString) |
Remove dead passes used by P. | |
void | freePass (Pass *P, StringRef Msg, enum PassDebuggingString) |
Remove P. | |
void | add (Pass *P, bool ProcessAnalysis=true) |
Add pass P into the PassVector. | |
virtual void | addLowerLevelRequiredPass (Pass *P, Pass *RequiredPass) |
Add RequiredPass into list of lower level passes required by pass P. | |
virtual std::tuple< Pass *, bool > | getOnTheFlyPass (Pass *P, AnalysisID PI, Function &F) |
void | initializeAnalysisInfo () |
Initialize available analysis information. | |
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. | |
void | initializeAnalysisImpl (Pass *P) |
All Required analyses should be available to the pass as it runs! | |
Pass * | findAnalysisPass (AnalysisID AID, bool Direction) |
Find the pass that implements Analysis AID. | |
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 |
void | dumpUsedSet (const Pass *P) const |
unsigned | getNumContainedPasses () const |
DenseMap< AnalysisID, Pass * > * | getAvailableAnalysis () |
void | populateInheritedAnalysis (PMStack &PMS) |
unsigned | initSizeRemarkInfo (Module &M, StringMap< std::pair< unsigned, unsigned > > &FunctionToInstrCount) |
Set the initial size of the module if the user has specified that they want remarks for size. | |
void | emitInstrCountChangedRemark (Pass *P, Module &M, int64_t Delta, unsigned CountBefore, StringMap< std::pair< unsigned, unsigned > > &FunctionToInstrCount, Function *F=nullptr) |
Emit a remark signifying that the number of IR instructions in the module changed. |
Static Public Attributes | |
static char | ID = 0 |
Additional Inherited Members | |
Static Public Member Functions inherited from llvm::Pass | |
static const PassInfo * | lookupPassInfo (const void *TI) |
static const PassInfo * | lookupPassInfo (StringRef Arg) |
static Pass * | createPass (AnalysisID ID) |
Protected Member Functions inherited from llvm::FunctionPass | |
bool | skipFunction (const Function &F) const |
Optional passes call this function to check whether the pass should be skipped. | |
Protected Member Functions inherited from llvm::PMDataManager | |
bool | isPassDebuggingExecutionsOrMore () const |
isPassDebuggingExecutionsOrMore - Return true if -debug-pass=Executions or higher is specified. | |
Protected Attributes inherited from llvm::PMDataManager | |
PMTopLevelManager * | TPM = nullptr |
SmallVector< Pass *, 16 > | PassVector |
DenseMap< AnalysisID, Pass * > * | InheritedAnalysis [PMT_Last] |
The pass manager to schedule RegionPasses.
Definition at line 88 of file RegionPass.h.
|
explicit |
Definition at line 35 of file RegionPass.cpp.
References llvm::FunctionPass::FunctionPass(), and ID.
|
overridevirtual |
Print passes managed by this manager.
Reimplemented from llvm::Pass.
Definition at line 165 of file RegionPass.cpp.
References llvm::PMDataManager::dumpLastUses(), llvm::errs(), getContainedPass(), llvm::PMDataManager::getNumContainedPasses(), llvm::raw_ostream::indent(), llvm::Offset, and P.
|
overridevirtual |
Pass Manager itself does not invalidate any analysis info.
RGPassManager needs RegionInfo.
Reimplemented from llvm::Pass.
Definition at line 48 of file RegionPass.cpp.
|
inlineoverridevirtual |
Implements llvm::PMDataManager.
Definition at line 109 of file RegionPass.h.
|
inlineoverridevirtual |
Reimplemented from llvm::Pass.
Definition at line 108 of file RegionPass.h.
References llvm::PMDataManager::PMDataManager().
Get passes contained by this manager.
Definition at line 115 of file RegionPass.h.
References assert(), FP, N, and llvm::PMDataManager::PassVector.
Referenced by dumpPassStructure(), and runOnFunction().
|
inlineoverridevirtual |
Reimplemented from llvm::PMDataManager.
Definition at line 121 of file RegionPass.h.
References llvm::PMT_RegionPassManager.
|
inlineoverridevirtual |
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 106 of file RegionPass.h.
Execute all of the passes scheduled for execution.
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 55 of file RegionPass.cpp.
References addRegionIntoQueue(), Changed, llvm::dbgs(), llvm::PMDataManager::dumpPassInfo(), llvm::PMDataManager::dumpPreservedSet(), llvm::PMDataManager::dumpRequiredSet(), llvm::errs(), llvm::EXECUTION_MSG, F, llvm::Pass::getAnalysis(), getContainedPass(), llvm::PMDataManager::getNumContainedPasses(), llvm::getPassTimer(), llvm::PMDataManager::initializeAnalysisImpl(), llvm::PMDataManager::isPassDebuggingExecutionsOrMore(), LLVM_DEBUG, llvm_unreachable, llvm::MODIFICATION_MSG, llvm::ON_REGION_MSG, P, llvm::PMDataManager::populateInheritedAnalysis(), llvm::PMDataManager::recordAvailableAnalysis(), llvm::PMDataManager::removeDeadPasses(), llvm::PMDataManager::removeNotPreservedAnalysis(), llvm::PMDataManager::TPM, llvm::PMDataManager::verifyPreservedAnalysis(), and X.
|
static |
Definition at line 94 of file RegionPass.h.
Referenced by RGPassManager().