LLVM 18.0.0git
|
Manages a sequence of passes over a particular unit of IR. More...
#include "llvm/IR/PassManager.h"
Public Member Functions | |
PassManager ()=default | |
Construct a pass manager. | |
PassManager (PassManager &&Arg) | |
PassManager & | operator= (PassManager &&RHS) |
void | printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName) |
PreservedAnalyses | run (IRUnitT &IR, AnalysisManagerT &AM, ExtraArgTs... ExtraArgs) |
Run all of the passes in this manager over the given unit of IR. | |
template<typename PassT > | |
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t<!std::is_same< PassT, PassManager >::value > | addPass (PassT &&Pass) |
template<typename PassT > | |
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t< std::is_same< PassT, PassManager >::value > | addPass (PassT &&Pass) |
When adding a pass manager pass that has the same type as this pass manager, simply move the passes over. | |
bool | isEmpty () const |
Returns if the pass manager contains any passes. | |
PreservedAnalyses | run (LazyCallGraph::SCC &InitialC, CGSCCAnalysisManager &AM, LazyCallGraph &G, CGSCCUpdateResult &UR) |
PreservedAnalyses | run (LazyCallGraph::SCC &InitialC, CGSCCAnalysisManager &AM, LazyCallGraph &G, CGSCCUpdateResult &UR) |
Explicitly specialize the pass manager run method to handle call graph updates. | |
![]() | |
void | printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName) |
Static Public Member Functions | |
static bool | isRequired () |
![]() | |
static StringRef | name () |
Gets the name of the pass we are mixed into. | |
Protected Types | |
using | PassConceptT = detail::PassConcept< IRUnitT, AnalysisManagerT, ExtraArgTs... > |
Protected Attributes | |
std::vector< std::unique_ptr< PassConceptT > > | Passes |
Manages a sequence of passes over a particular unit of IR.
A pass manager contains a sequence of passes to run over a particular unit of IR (e.g. Functions, Modules). It is itself a valid pass over that unit of IR, and when run over some given IR will run each of its contained passes in sequence. Pass managers are the primary and most basic building block of a pass pipeline.
When you run a pass manager, you provide an AnalysisManager<IRUnitT>
argument. The pass manager will propagate that analysis manager to each pass it runs, and will call the analysis manager's invalidation routine with the PreservedAnalyses of each pass it runs.
Definition at line 469 of file PassManager.h.
|
protected |
Definition at line 573 of file PassManager.h.
|
explicitdefault |
Construct a pass manager.
|
inline |
Definition at line 479 of file PassManager.h.
|
inline |
Definition at line 544 of file PassManager.h.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::Passes.
Referenced by addAnnotationRemarksPass(), llvm::ModuleInlinerWrapperPass::addLateModulePass(), llvm::ModuleInlinerWrapperPass::addModulePass(), llvm::PassBuilder::addPGOInstrPassesForO0(), llvm::PassBuilder::buildFatLTODefaultPipeline(), llvm::PassBuilder::buildFunctionSimplificationPipeline(), llvm::PassBuilder::buildInlinerPipeline(), llvm::PassBuilder::buildLTODefaultPipeline(), llvm::PassBuilder::buildModuleInlinerPipeline(), llvm::PassBuilder::buildModuleOptimizationPipeline(), llvm::PassBuilder::buildModuleSimplificationPipeline(), llvm::PassBuilder::buildO0DefaultPipeline(), llvm::PassBuilder::buildPerModuleDefaultPipeline(), llvm::PassBuilder::buildThinLTODefaultPipeline(), llvm::PassBuilder::buildThinLTOPreLinkDefaultPipeline(), eliminateDeadCode(), llvm::FunctionToLoopPassAdaptor::FunctionToLoopPassAdaptor(), if(), llvm::ModuleInlinerWrapperPass::ModuleInlinerWrapperPass(), llvm::CodeGenPassBuilder< DerivedT >::AddIRPass::operator()(), llvm::parseAnalysisUtilityPasses(), llvm::AMDGPUTargetMachine::registerPassBuilderCallbacks(), llvm::BPFTargetMachine::registerPassBuilderCallbacks(), llvm::DirectXTargetMachine::registerPassBuilderCallbacks(), llvm::NVPTXTargetMachine::registerPassBuilderCallbacks(), llvm::CoroCleanupPass::run(), runNewPMPasses(), and llvm::CodeGenPassBuilder< DerivedT >::AddIRPass::~AddIRPass().
|
inline |
When adding a pass manager pass that has the same type as this pass manager, simply move the passes over.
This is because we don't have use cases rely on executing nested pass managers. Doing this could reduce implementation complexity and avoid potential invalidation issues that may happen with nested pass managers of the same type.
Definition at line 562 of file PassManager.h.
References P, and llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::Passes.
|
inline |
Returns if the pass manager contains any passes.
Definition at line 568 of file PassManager.h.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::Passes.
Referenced by llvm::PassBuilder::buildO0DefaultPipeline(), and llvm::ModuleInlinerWrapperPass::printPipeline().
|
inlinestatic |
Definition at line 570 of file PassManager.h.
|
inline |
Definition at line 481 of file PassManager.h.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::Passes, and RHS.
|
inline |
Definition at line 486 of file PassManager.h.
References Idx, OS, P, llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::Passes, and Size.
Referenced by llvm::CoroConditionalWrapper::printPipeline(), and llvm::ModuleInlinerWrapperPass::printPipeline().
|
inline |
Run all of the passes in this manager over the given unit of IR.
ExtraArgs are passed to each pass.
Definition at line 498 of file PassManager.h.
References llvm::PreservedAnalyses::all(), llvm::PreservedAnalyses::intersect(), IR, llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::Passes, llvm::PreservedAnalyses::preserveSet(), llvm::PassInstrumentation::runAfterPass(), and llvm::PassInstrumentation::runBeforePass().
Referenced by eliminateDeadCode(), llvm::FunctionToLoopPassAdaptor::run(), llvm::EmbedBitcodePass::run(), llvm::CoroConditionalWrapper::run(), llvm::CoroCleanupPass::run(), and runNewPMPasses().
PreservedAnalyses llvm::PassManager< LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &, CGSCCUpdateResult & >::run | ( | LazyCallGraph::SCC & | InitialC, |
CGSCCAnalysisManager & | AM, | ||
LazyCallGraph & | G, | ||
CGSCCUpdateResult & | UR | ||
) |
PreservedAnalyses llvm::PassManager< LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &, CGSCCUpdateResult & >::run | ( | LazyCallGraph::SCC & | InitialC, |
CGSCCAnalysisManager & | AM, | ||
LazyCallGraph & | G, | ||
CGSCCUpdateResult & | UR | ||
) |
Explicitly specialize the pass manager run method to handle call graph updates.
Definition at line 63 of file CGSCCPassManager.cpp.
References llvm::PreservedAnalyses::all(), assert(), llvm::CallingConv::C, llvm::CGSCCUpdateResult::CrossSCCPA, llvm::dbgs(), FAM, G, llvm::AnalysisManager< IRUnitT, ExtraArgTs >::getCachedResult(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::getResult(), llvm::PreservedAnalyses::intersect(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::invalidate(), llvm::CGSCCUpdateResult::InvalidatedSCCs, LLVM_DEBUG, Passes, llvm::PassInstrumentation::runAfterPass(), llvm::PassInstrumentation::runAfterPassInvalidated(), llvm::PassInstrumentation::runBeforePass(), and llvm::CGSCCUpdateResult::UpdatedC.
|
protected |
Definition at line 576 of file PassManager.h.
Referenced by llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::isEmpty(), llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::operator=(), llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::printPipeline(), and llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::run().