LLVM  12.0.0git
Public Member Functions | Protected Member Functions | List of all members
llvm::LoopPass Class Referenceabstract

#include "llvm/Analysis/LoopPass.h"

Inheritance diagram for llvm::LoopPass:
Inheritance graph
[legend]
Collaboration diagram for llvm::LoopPass:
Collaboration graph
[legend]

Public Member Functions

 LoopPass (char &pid)
 
PasscreatePrinterPass (raw_ostream &O, const std::string &Banner) const override
 getPrinterPass - Get a pass to print the function corresponding to a Loop. More...
 
virtual bool runOnLoop (Loop *L, LPPassManager &LPM)=0
 
virtual bool doInitialization (Loop *L, LPPassManager &LPM)
 
virtual bool doFinalization ()
 
void preparePassManager (PMStack &PMS) override
 Check if available pass managers are suitable for this pass or not. More...
 
void assignPassManager (PMStack &PMS, PassManagerType PMT) override
 Assign pass manager to manage this pass. More...
 
PassManagerType getPotentialPassManagerType () const override
 Return what kind of Pass Manager can manage this pass. More...
 
- Public Member Functions inherited from llvm::Pass
 Pass (PassKind K, char &pid)
 
 Pass (const Pass &)=delete
 
Passoperator= (const Pass &)=delete
 
virtual ~Pass ()
 
PassKind getPassKind () const
 
virtual StringRef getPassName () const
 getPassName - Return a nice clean name for a pass. More...
 
AnalysisID getPassID () const
 getPassID - Return the PassID number that corresponds to this pass. More...
 
virtual bool doInitialization (Module &)
 doInitialization - Virtual method overridden by subclasses to do any necessary initialization before any pass is run. More...
 
virtual bool doFinalization (Module &)
 doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes have run. More...
 
virtual void print (raw_ostream &OS, const Module *M) const
 print - Print out the internal state of the pass. More...
 
void dump () const
 
void setResolver (AnalysisResolver *AR)
 
AnalysisResolvergetResolver () const
 
virtual void getAnalysisUsage (AnalysisUsage &) const
 getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. More...
 
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. More...
 
virtual void * getAdjustedAnalysisPointer (AnalysisID ID)
 getAdjustedAnalysisPointer - This method is used when a pass implements an analysis interface through multiple inheritance. More...
 
virtual ImmutablePassgetAsImmutablePass ()
 
virtual PMDataManagergetAsPMDataManager ()
 
virtual void verifyAnalysis () const
 verifyAnalysis() - This member can be implemented by a analysis pass to check state of analysis information. More...
 
virtual void dumpPassStructure (unsigned Offset=0)
 
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. More...
 
bool mustPreserveAnalysisID (char &AID) const
 mustPreserveAnalysisID - This method serves the same function as getAnalysisIfAvailable, but works if you just have an AnalysisID. More...
 
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. More...
 
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. More...
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI) const
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI, Function &F, bool *Changed=nullptr)
 

Protected Member Functions

bool skipLoop (const Loop *L) const
 Optional passes call this function to check whether the pass should be skipped. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from llvm::Pass
static const PassInfolookupPassInfo (const void *TI)
 
static const PassInfolookupPassInfo (StringRef Arg)
 
static PasscreatePass (AnalysisID ID)
 

Detailed Description

Definition at line 27 of file LoopPass.h.

Constructor & Destructor Documentation

◆ LoopPass()

llvm::LoopPass::LoopPass ( char pid)
inlineexplicit

Member Function Documentation

◆ assignPassManager()

void LoopPass::assignPassManager ( PMStack PMS,
PassManagerType  PMT 
)
overridevirtual

◆ createPrinterPass()

Pass * LoopPass::createPrinterPass ( raw_ostream O,
const std::string &  Banner 
) const
overridevirtual

getPrinterPass - Get a pass to print the function corresponding to a Loop.

Implements llvm::Pass.

Definition at line 307 of file LoopPass.cpp.

Referenced by LoopPass().

◆ doFinalization()

virtual bool llvm::LoopPass::doFinalization ( )
inlinevirtual

Definition at line 50 of file LoopPass.h.

References assignPassManager(), and preparePassManager().

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

◆ doInitialization()

virtual bool llvm::LoopPass::doInitialization ( Loop L,
LPPassManager LPM 
)
inlinevirtual

Definition at line 44 of file LoopPass.h.

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

◆ getPotentialPassManagerType()

PassManagerType llvm::LoopPass::getPotentialPassManagerType ( ) const
inlineoverridevirtual

Return what kind of Pass Manager can manage this pass.

Reimplemented from llvm::Pass.

Definition at line 64 of file LoopPass.h.

References llvm::PMT_LoopPassManager, and skipLoop().

◆ preparePassManager()

void LoopPass::preparePassManager ( PMStack )
overridevirtual

Check if available pass managers are suitable for this pass or not.

Reimplemented from llvm::Pass.

Definition at line 318 of file LoopPass.cpp.

References llvm::PMStack::empty(), llvm::PMDataManager::getPassManagerType(), llvm::PMT_LoopPassManager, llvm::PMStack::pop(), llvm::PMDataManager::preserveHigherLevelAnalysis(), and llvm::PMStack::top().

Referenced by doFinalization().

◆ runOnLoop()

virtual bool llvm::LoopPass::runOnLoop ( Loop L,
LPPassManager LPM 
)
pure virtual

◆ skipLoop()

bool LoopPass::skipLoop ( const Loop L) const
protected

Optional passes call this function to check whether the pass should be skipped.

This is the case when Attribute::OptimizeNone is set or when optimization bisect is over the limit.

Definition at line 373 of file LoopPass.cpp.

References llvm::dbgs(), F(), llvm::Function::getContext(), getDescription(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::Value::getName(), llvm::LLVMContext::getOptPassGate(), llvm::BasicBlock::getParent(), llvm::LPPassManager::getPassName(), llvm::Function::hasOptNone(), llvm::OptPassGate::isEnabled(), LLVM_DEBUG, and llvm::OptPassGate::shouldRunPass().

Referenced by getPotentialPassManagerType().


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