LLVM 19.0.0git
|
Manages a sequence of passes over a particular unit of IR. More...
#include "llvm/IR/PassManager.h"
Static Public Member Functions | |
static bool | isRequired () |
Static Public Member Functions inherited from llvm::PassInfoMixin< DerivedT > | |
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 172 of file PassManager.h.
|
protected |
Definition at line 274 of file PassManager.h.
|
explicitdefault |
Construct a pass manager.
|
inline |
Definition at line 182 of file PassManager.h.
void llvm::PassManager< MachineFunction >::addPass | ( | PassT && | Pass | ) |
Definition at line 225 of file MachinePassManager.h.
|
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 249 of file PassManager.h.
References P, and 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::CodeGenPassBuilder< DerivedT, TargetMachineT >::insertPass(), llvm::ModuleInlinerWrapperPass::ModuleInlinerWrapperPass(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::AddMachinePass::operator()(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::AddIRPass::operator()(), llvm::parseAnalysisUtilityPasses(), llvm::AMDGPUTargetMachine::registerPassBuilderCallbacks(), llvm::BPFTargetMachine::registerPassBuilderCallbacks(), llvm::NVPTXTargetMachine::registerPassBuilderCallbacks(), llvm::CoroCleanupPass::run(), runNewPMPasses(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::AddIRPass::~AddIRPass(), and llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::AddMachinePass::~AddMachinePass().
|
inline |
Returns if the pass manager contains any passes.
Definition at line 269 of file PassManager.h.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::Passes.
Referenced by llvm::PassBuilder::buildO0DefaultPipeline(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::AddMachinePass::operator()(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::AddIRPass::operator()(), llvm::ModuleInlinerWrapperPass::printPipeline(), llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::AddIRPass::~AddIRPass(), and llvm::CodeGenPassBuilder< DerivedT, TargetMachineT >::AddMachinePass::~AddMachinePass().
|
inlinestatic |
Definition at line 271 of file PassManager.h.
|
inline |
Definition at line 184 of file PassManager.h.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::Passes, and RHS.
|
inline |
Definition at line 189 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 201 of file PassManager.h.
References llvm::PreservedAnalyses::all(), llvm::PreservedAnalyses::intersect(), IR, llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::Passes, llvm::PreservedAnalyses::preserveSet(), llvm::PassInstrumentation::runAfterPass(), llvm::PassInstrumentation::runBeforePass(), and UseNewDbgInfoFormat.
Referenced by eliminateDeadCode(), llvm::FunctionToLoopPassAdaptor::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.
PreservedAnalyses llvm::PassManager< MachineFunction >::run | ( | MachineFunction & | , |
AnalysisManager< MachineFunction > & | |||
) |
PreservedAnalyses llvm::PassManager< MachineFunction >::run | ( | MachineFunction & | MF, |
AnalysisManager< MachineFunction > & | MFAM | ||
) |
Definition at line 112 of file MachinePassManager.cpp.
References llvm::PreservedAnalyses::all(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::clear(), F, llvm::MachineFunction::getFunction(), llvm::MachineModuleInfo::getMachineFunction(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::getResult(), llvm::PreservedAnalyses::intersect(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::invalidate(), Passes, llvm::PassInstrumentation::runAfterPass(), llvm::PassInstrumentation::runAfterPassInvalidated(), and llvm::PassInstrumentation::runBeforePass().
|
protected |
Definition at line 277 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().