LLVM 22.0.0git
llvm::LoopPass Class Referenceabstract

#include "llvm/Analysis/LoopPass.h"

Inheritance diagram for llvm::LoopPass:
[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.
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.
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.
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 void print (raw_ostream &OS, const Module *M) const
 print - Print out the internal state of the pass.
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.
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 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 29 of file LoopPass.h.

Constructor & Destructor Documentation

◆ LoopPass()

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

Definition at line 31 of file LoopPass.h.

References llvm::Pass::Pass(), and llvm::PT_Loop.

Referenced by llvm::IVUsersWrapperPass::IVUsersWrapperPass().

Member Function Documentation

◆ assignPassManager()

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

References llvm::Pass::Pass().

◆ doFinalization() [1/2]

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

Definition at line 52 of file LoopPass.h.

◆ doFinalization() [2/2]

virtual bool llvm::Pass::doFinalization ( Module & )
inlinevirtual

doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes have run.

Reimplemented from llvm::Pass.

Definition at line 132 of file Pass.h.

◆ doInitialization() [1/2]

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

Definition at line 46 of file LoopPass.h.

◆ doInitialization() [2/2]

virtual bool llvm::Pass::doInitialization ( Module & )
inlinevirtual

doInitialization - Virtual method overridden by subclasses to do any necessary initialization before any pass is run.

Reimplemented from llvm::Pass.

Definition at line 128 of file Pass.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 66 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 316 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

◆ 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 371 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: