LLVM 19.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]

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.
 
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.
 
void assignPassManager (PMStack &PMS, PassManagerType PMT) override
 Assign pass manager to manage this pass.
 
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
 
Passoperator= (const Pass &)=delete
 
virtual ~Pass ()
 
PassKind getPassKind () const
 
virtual StringRef getPassName () const
 getPassName - Return a nice clean name for a pass.
 
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 PasscreatePrinterPass (raw_ostream &OS, const std::string &Banner) const =0
 createPrinterPass - Get a Pass appropriate to print the IR this pass operates on (Module, Function or MachineFunction).
 
virtual void assignPassManager (PMStack &, PassManagerType)
 Each pass is responsible for assigning a pass manager to itself.
 
virtual void preparePassManager (PMStack &)
 Check if available pass managers are suitable for this pass or not.
 
virtual PassManagerType getPotentialPassManagerType () const
 Return what kind of Pass Manager can manage this pass.
 
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.
 
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 void * getAdjustedAnalysisPointer (AnalysisID ID)
 getAdjustedAnalysisPointer - This method is used when a pass implements an analysis interface through multiple inheritance.
 
virtual ImmutablePassgetAsImmutablePass ()
 
virtual PMDataManagergetAsPMDataManager ()
 
virtual void verifyAnalysis () const
 verifyAnalysis() - This member can be implemented by a analysis pass to check state of analysis information.
 
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.
 
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)
 

Protected Member Functions

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

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 28 of file LoopPass.h.

Constructor & Destructor Documentation

◆ LoopPass()

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

Definition at line 30 of file LoopPass.h.

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 304 of file LoopPass.cpp.

◆ doFinalization()

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

Definition at line 51 of file LoopPass.h.

◆ doInitialization()

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

Definition at line 45 of file LoopPass.h.

◆ getPotentialPassManagerType()

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

Return what kind of Pass Manager can manage this pass.

Reimplemented from llvm::Pass.

Definition at line 65 of file LoopPass.h.

References llvm::PMT_LoopPassManager.

◆ 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 315 of file LoopPass.cpp.

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

◆ runOnLoop()

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

Implemented in llvm::IVUsersWrapperPass.

◆ 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 370 of file LoopPass.cpp.

References llvm::dbgs(), F, getDescription(), llvm::Pass::getPassName(), llvm::OptPassGate::isEnabled(), LLVM_DEBUG, and llvm::OptPassGate::shouldRunPass().


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