Go to the documentation of this file.
15 #ifndef LLVM_PASSES_PASSBUILDER_H
16 #define LLVM_PASSES_PASSBUILDER_H
35 class ModuleSummaryIndex;
234 bool LTOPreLink =
false);
297 bool LTOPreLink =
false);
394 PeepholeEPCallbacks.push_back(
C);
408 LateLoopOptimizationsEPCallbacks.push_back(
C);
418 LoopOptimizerEndEPCallbacks.push_back(
C);
428 ScalarOptimizerLateEPCallbacks.push_back(
C);
439 CGSCCOptimizerLateEPCallbacks.push_back(
C);
450 VectorizerStartEPCallbacks.push_back(
C);
460 PipelineStartEPCallbacks.push_back(
C);
469 PipelineEarlySimplificationEPCallbacks.push_back(
C);
478 OptimizerEarlyEPCallbacks.push_back(
C);
487 OptimizerLastEPCallbacks.push_back(
C);
496 FullLinkTimeOptimizationEarlyEPCallbacks.push_back(
C);
505 FullLinkTimeOptimizationLastEPCallbacks.push_back(
C);
512 AAParsingCallbacks.push_back(
C);
520 CGSCCAnalysisRegistrationCallbacks.push_back(
C);
524 FunctionAnalysisRegistrationCallbacks.push_back(
C);
528 LoopAnalysisRegistrationCallbacks.push_back(
C);
532 ModuleAnalysisRegistrationCallbacks.push_back(
C);
543 CGSCCPipelineParsingCallbacks.push_back(
C);
548 FunctionPipelineParsingCallbacks.push_back(
C);
553 LoopPipelineParsingCallbacks.push_back(
C);
558 ModulePipelineParsingCallbacks.push_back(
C);
573 bool IsCS, std::string ProfileFile,
574 std::string ProfileRemappingFile);
612 bool RunProfileGen,
bool IsCS, std::string ProfileFile,
613 std::string ProfileRemappingFile,
621 LateLoopOptimizationsEPCallbacks;
623 LoopOptimizerEndEPCallbacks;
625 ScalarOptimizerLateEPCallbacks;
627 CGSCCOptimizerLateEPCallbacks;
629 VectorizerStartEPCallbacks;
632 OptimizerEarlyEPCallbacks;
634 OptimizerLastEPCallbacks;
636 FullLinkTimeOptimizationEarlyEPCallbacks;
638 FullLinkTimeOptimizationLastEPCallbacks;
640 PipelineStartEPCallbacks;
642 PipelineEarlySimplificationEPCallbacks;
645 ModuleAnalysisRegistrationCallbacks;
649 ModulePipelineParsingCallbacks;
652 TopLevelPipelineParsingCallbacks;
655 CGSCCAnalysisRegistrationCallbacks;
659 CGSCCPipelineParsingCallbacks;
662 FunctionAnalysisRegistrationCallbacks;
666 FunctionPipelineParsingCallbacks;
669 LoopAnalysisRegistrationCallbacks;
673 LoopPipelineParsingCallbacks;
693 template <
typename AnalysisT,
typename IRUnitT,
typename AnalysisManagerT,
694 typename... ExtraArgTs>
702 PipelineName = PipelineName.
substr(11, PipelineName.
size() - 12);
703 if (PipelineName != AnalysisName)
711 PipelineName = PipelineName.
substr(8, PipelineName.
size() - 9);
712 if (PipelineName != AnalysisName)
A manager for alias analyses.
LLVM_NODISCARD bool startswith(StringRef Prefix) const
Check if this string starts with the given Prefix.
This is an optimization pass for GlobalISel generic memory operations.
aarch64 falkor hwpf fix Falkor HW Prefetch Fix Late Phase
void registerPipelineStartEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
LLVM_NODISCARD bool endswith(StringRef Suffix) const
Check if this string ends with the given Suffix.
LLVM_ATTRIBUTE_MINSIZE std::enable_if_t<!std::is_same< PassT, PassManager >::value > addPass(PassT &&Pass)
PassInstrumentationCallbacks * getPassInstrumentationCallbacks() const
Returns PIC.
void registerOptimizerEarlyEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
ModulePassManager buildModuleOptimizationPipeline(OptimizationLevel Level, ThinOrFullLTOPhase LTOPhase)
Construct the core LLVM module optimization pipeline.
PassBuilder(TargetMachine *TM=nullptr, PipelineTuningOptions PTO=PipelineTuningOptions(), Optional< PGOOptions > PGOOpt=None, PassInstrumentationCallbacks *PIC=nullptr)
Tunable parameters for passes in the default pipelines.
FunctionAnalysisManager FAM
bool ForgetAllSCEVInLoopUnroll
Tuning option to forget all SCEV loops in LoopUnroll.
PassInstrumentationCallbacks PIC
void registerAnalysisRegistrationCallback(const std::function< void(CGSCCAnalysisManager &)> &C)
{{@ Register callbacks for analysis registration with this PassBuilder instance.
void registerOptimizerLastEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
void registerScalarOptimizerLateEPCallback(const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
void addPGOInstrPassesForO0(ModulePassManager &MPM, bool RunProfileGen, bool IsCS, std::string ProfileFile, std::string ProfileRemappingFile)
Add PGOInstrumenation passes for O0 only.
unsigned LicmMssaNoAccForPromotionCap
Tuning option to disable promotion to scalars in LICM with MemorySSA, if the number of access is too ...
Error parsePassPipeline(ModulePassManager &MPM, StringRef PipelineText)
Parse a textual pass pipeline description into a ModulePassManager.
LLVM_NODISCARD StringRef substr(size_t Start, size_t N=npos) const
Return a reference to the substring from [Start, Start + N).
void registerPipelineParsingCallback(const std::function< bool(StringRef Name, FunctionPassManager &, ArrayRef< PipelineElement >)> &C)
ThinOrFullLTOPhase
This enumerates the LLVM full LTO or ThinLTO optimization phases.
Module pass, wrapping the inliner pass.
void registerParseAACallback(const std::function< bool(StringRef Name, AAManager &AA)> &C)
Register a callback for parsing an AliasAnalysis Name to populate the given AAManager AA.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
(vector float) vec_cmpeq(*A, *B) C
ModuleAnalysisManager MAM
This class provides access to building LLVM's passes.
FunctionPassManager buildFunctionSimplificationPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase)
Construct the core LLVM function canonicalization and simplification pipeline.
A struct to capture parsed pass pipeline names.
This class implements an extremely fast bulk output stream that can only output to a stream.
bool parseAnalysisUtilityPasses(StringRef AnalysisName, StringRef PipelineName, PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs... > &PM)
This utility template takes care of adding require<> and invalidate<> passes for an analysis to a giv...
ModuleInlinerWrapperPass buildInlinerPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase)
Construct the module pipeline that performs inlining as well as the inlining-driven cleanups.
ModulePassManager buildThinLTOPreLinkDefaultPipeline(OptimizationLevel Level)
Build a pre-link, ThinLTO-targeting default optimization pipeline to a pass manager.
bool isAnalysisPassName(StringRef PassName)
Returns true if the pass name is the name of a (non-alias) analysis pass.
bool isAAPassName(StringRef PassName)
Returns true if the pass name is the name of an alias analysis pass.
ModulePassManager buildModuleInlinerPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase)
Construct the module pipeline that performs inlining with module inliner pass.
bool EagerlyInvalidateAnalyses
void registerPipelineEarlySimplificationEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
void registerPipelineParsingCallback(const std::function< bool(StringRef Name, ModulePassManager &, ArrayRef< PipelineElement >)> &C)
void registerFunctionAnalyses(FunctionAnalysisManager &FAM)
Registers all available function analysis passes.
ModulePassManager buildLTOPreLinkDefaultPipeline(OptimizationLevel Level)
Build a pre-link, LTO-targeting default optimization pipeline to a pass manager.
void registerModuleAnalyses(ModuleAnalysisManager &MAM)
Registers all available module analysis passes.
void registerVectorizerStartEPCallback(const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
ModulePassManager buildLTODefaultPipeline(OptimizationLevel Level, ModuleSummaryIndex *ExportSummary)
Build an LTO default optimization pipeline to a pass manager.
A no-op pass template which simply forces a specific analysis result to be invalidated.
ModulePassManager buildThinLTODefaultPipeline(OptimizationLevel Level, const ModuleSummaryIndex *ImportSummary)
Build an ThinLTO default optimization pipeline to a pass manager.
AAManager buildDefaultAAPipeline()
Build the default AAManager with the default alias analysis pipeline registered.
PipelineTuningOptions()
Constructor sets pipeline tuning defaults based on cl::opts.
void printPassNames(raw_ostream &OS)
Print pass names.
Primary interface to the complete machine description for the target machine.
bool SLPVectorization
Tuning option to enable/disable slp loop vectorization, set based on opt level.
void registerLoopOptimizerEndEPCallback(const std::function< void(LoopPassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
void registerAnalysisRegistrationCallback(const std::function< void(FunctionAnalysisManager &)> &C)
print Print MemDeps of function
void registerPipelineParsingCallback(const std::function< bool(StringRef Name, CGSCCPassManager &, ArrayRef< PipelineElement >)> &C)
{{@ Register pipeline parsing callbacks with this pass builder instance.
void registerLateLoopOptimizationsEPCallback(const std::function< void(LoopPassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
bool CallGraphProfile
Tuning option to enable/disable call graph profile.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
StringRef - Represent a constant reference to a string, i.e.
bool LoopVectorization
Tuning option to enable/disable loop vectorization, set based on opt level.
void registerPipelineParsingCallback(const std::function< bool(StringRef Name, LoopPassManager &, ArrayRef< PipelineElement >)> &C)
Error parseAAPipeline(AAManager &AA, StringRef PipelineText)
Parse a textual alias analysis pipeline into the provided AA manager.
void registerLoopAnalyses(LoopAnalysisManager &LAM)
Registers all available loop analysis passes.
void registerFullLinkTimeOptimizationLastEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
constexpr LLVM_NODISCARD size_t size() const
size - Get the string size.
ModulePassManager buildPerModuleDefaultPipeline(OptimizationLevel Level, bool LTOPreLink=false)
Build a per-module default optimization pipeline.
void registerFullLinkTimeOptimizationEarlyEPCallback(const std::function< void(ModulePassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
Lightweight error class with error context and mandatory checking.
bool MergeFunctions
Tuning option to enable/disable function merging.
void registerCGSCCAnalyses(CGSCCAnalysisManager &CGAM)
Registers all available CGSCC analysis passes.
void registerAnalysisRegistrationCallback(const std::function< void(LoopAnalysisManager &)> &C)
ModulePassManager buildO0DefaultPipeline(OptimizationLevel Level, bool LTOPreLink=false)
Build an O0 pipeline with the minimal semantically required passes.
Class to hold module path string table and global value map, and encapsulate methods for operating on...
This class manages callbacks registration, as well as provides a way for PassInstrumentation to pass ...
void crossRegisterProxies(LoopAnalysisManager &LAM, FunctionAnalysisManager &FAM, CGSCCAnalysisManager &CGAM, ModuleAnalysisManager &MAM)
Cross register the analysis managers through their proxies.
void registerCGSCCOptimizerLateEPCallback(const std::function< void(CGSCCPassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
A container for analyses that lazily runs them and caches their results.
void registerPeepholeEPCallback(const std::function< void(FunctionPassManager &, OptimizationLevel)> &C)
Register a callback for a default optimizer pipeline extension point.
A utility pass template to force an analysis result to be available.
ModulePassManager buildModuleSimplificationPipeline(OptimizationLevel Level, ThinOrFullLTOPhase Phase)
Construct the core LLVM module canonicalization and simplification pipeline.
bool LoopUnrolling
Tuning option to enable/disable loop unrolling. Its default value is true.
void registerAnalysisRegistrationCallback(const std::function< void(ModuleAnalysisManager &)> &C)
unsigned LicmMssaOptCap
Tuning option to cap the number of calls to retrive clobbering accesses in MemorySSA,...
bool LoopInterleaving
Tuning option to set loop interleaving on/off, set based on opt level.
void registerParseTopLevelPipelineCallback(const std::function< bool(ModulePassManager &, ArrayRef< PipelineElement >)> &C)
Register a callback for a top-level pipeline entry.
CGSCCAnalysisManager CGAM
static const char PassName[]
std::vector< PipelineElement > InnerPipeline