LLVM 19.0.0git
Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & > Class Reference

#include "llvm/Transforms/Scalar/LoopPassManager.h"

Inheritance diagram for llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >:
Inheritance graph
[legend]

Public Member Functions

 PassManager ()=default
 
 PassManager (PassManager &&Arg)
 
PassManageroperator= (PassManager &&RHS)
 
PreservedAnalyses run (Loop &L, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR, LPMUpdater &U)
 Add either a loop pass or a loop-nest pass to the pass manager.
 
void printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
 
template<typename PassT >
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t< is_detected< HasRunOnLoopT, PassT >::valueaddPass (PassT &&Pass)
 
template<typename PassT >
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t<!is_detected< HasRunOnLoopT, PassT >::valueaddPass (PassT &&Pass)
 
template<typename PassT >
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t< is_detected< HasRunOnLoopT, PassT >::valueaddPass (RepeatedPass< PassT > &&Pass)
 
template<typename PassT >
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t<!is_detected< HasRunOnLoopT, PassT >::valueaddPass (RepeatedPass< PassT > &&Pass)
 
bool isEmpty () const
 
size_t getNumLoopPasses () const
 
size_t getNumLoopNestPasses () const
 
- Public Member Functions inherited from llvm::PassInfoMixin< PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & > >
void printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
 

Static Public Member Functions

static bool isRequired ()
 
- Static Public Member Functions inherited from llvm::PassInfoMixin< PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & > >
static StringRef name ()
 Gets the name of the pass we are mixed into.
 

Protected Types

using LoopPassConceptT = detail::PassConcept< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >
 
using LoopNestPassConceptT = detail::PassConcept< LoopNest, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >
 

Protected Member Functions

template<typename IRUnitT , typename PassT >
std::optional< PreservedAnalysesrunSinglePass (IRUnitT &IR, PassT &Pass, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR, LPMUpdater &U, PassInstrumentation &PI)
 Run either a loop pass or a loop-nest pass.
 
PreservedAnalyses runWithLoopNestPasses (Loop &L, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR, LPMUpdater &U)
 
PreservedAnalyses runWithoutLoopNestPasses (Loop &L, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR, LPMUpdater &U)
 

Protected Attributes

BitVector IsLoopNestPass
 
std::vector< std::unique_ptr< LoopPassConceptT > > LoopPasses
 
std::vector< std::unique_ptr< LoopNestPassConceptT > > LoopNestPasses
 

Detailed Description

Definition at line 69 of file LoopPassManager.h.

Member Typedef Documentation

◆ LoopNestPassConceptT

Definition at line 174 of file LoopPassManager.h.

◆ LoopPassConceptT

Definition at line 171 of file LoopPassManager.h.

Constructor & Destructor Documentation

◆ PassManager() [1/2]

◆ PassManager() [2/2]

Definition at line 81 of file LoopPassManager.h.

Member Function Documentation

◆ addPass() [1/4]

template<typename PassT >
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t< is_detected< HasRunOnLoopT, PassT >::value > llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::addPass ( PassT &&  Pass)
inline

◆ addPass() [2/4]

template<typename PassT >
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t<!is_detected< HasRunOnLoopT, PassT >::value > llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::addPass ( PassT &&  Pass)
inline

Definition at line 121 of file LoopPassManager.h.

◆ addPass() [3/4]

template<typename PassT >
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t< is_detected< HasRunOnLoopT, PassT >::value > llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::addPass ( RepeatedPass< PassT > &&  Pass)
inline

Definition at line 138 of file LoopPassManager.h.

◆ addPass() [4/4]

template<typename PassT >
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t<!is_detected< HasRunOnLoopT, PassT >::value > llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::addPass ( RepeatedPass< PassT > &&  Pass)
inline

Definition at line 152 of file LoopPassManager.h.

◆ getNumLoopNestPasses()

size_t llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::getNumLoopNestPasses ( ) const
inline

Definition at line 168 of file LoopPassManager.h.

◆ getNumLoopPasses()

size_t llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::getNumLoopPasses ( ) const
inline

Definition at line 167 of file LoopPassManager.h.

◆ isEmpty()

Definition at line 163 of file LoopPassManager.h.

Referenced by llvm::PassBuilder::buildO0DefaultPipeline().

◆ isRequired()

Definition at line 165 of file LoopPassManager.h.

◆ operator=()

Definition at line 86 of file LoopPassManager.h.

References RHS.

◆ printPipeline()

void llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::printPipeline ( raw_ostream OS,
function_ref< StringRef(StringRef)>  MapClassName2PassName 
)

Definition at line 47 of file LoopPassManager.cpp.

References assert(), Idx, OS, P, and Size.

◆ run()

Add either a loop pass or a loop-nest pass to the pass manager.

Explicitly specialize the pass manager's run method to handle loop nest structure updates.

loop-nests instead.

Append Pass to the list of loop passes if it has a dedicated loops and to the list of loop-nest passes if the

Also append whether Pass is loop-nest pass or not to the end of

Definition at line 27 of file LoopPassManager.cpp.

References llvm::PreservedAnalyses::preserveSet().

Referenced by llvm::ExtraSimpleLoopUnswitchPassManager::run().

◆ runSinglePass()

template<typename IRUnitT , typename PassT >
std::optional< PreservedAnalyses > llvm::LoopPassManager::runSinglePass ( IRUnitT &  IR,
PassT Pass,
LoopAnalysisManager AM,
LoopStandardAnalysisResults AR,
LPMUpdater U,
PassInstrumentation PI 
)
protected

Run either a loop pass or a loop-nest pass.

Returns std::nullopt if PassInstrumentation's BeforePass returns false. Otherwise, returns the preserved analyses of the pass.

Definition at line 394 of file LoopPassManager.h.

References IR, and Pass.

◆ runWithLoopNestPasses()

PreservedAnalyses llvm::LoopPassManager::runWithLoopNestPasses ( Loop L,
LoopAnalysisManager AM,
LoopStandardAnalysisResults AR,
LPMUpdater U 
)
protected

◆ runWithoutLoopNestPasses()

PreservedAnalyses llvm::LoopPassManager::runWithoutLoopNestPasses ( Loop L,
LoopAnalysisManager AM,
LoopStandardAnalysisResults AR,
LPMUpdater U 
)
protected

Member Data Documentation

◆ IsLoopNestPass

Definition at line 180 of file LoopPassManager.h.

◆ LoopNestPasses

std::vector<std::unique_ptr<LoopNestPassConceptT> > llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::LoopNestPasses
protected

Definition at line 182 of file LoopPassManager.h.

◆ LoopPasses

std::vector<std::unique_ptr<LoopPassConceptT> > llvm::PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & >::LoopPasses
protected

Definition at line 181 of file LoopPassManager.h.


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