16 #ifndef LLVM_PASSES_PASSBUILDER_H
17 #define LLVM_PASSES_PASSBUILDER_H
182 bool DebugLogging =
false);
196 bool DebugLogging =
false);
211 bool DebugLogging =
false);
225 bool DebugLogging =
false);
260 bool VerifyEachPass =
true,
bool DebugLogging =
false);
281 struct PipelineElement {
283 std::vector<PipelineElement> InnerPipeline;
286 static Optional<std::vector<PipelineElement>>
287 parsePipelineText(StringRef Text);
290 bool VerifyEachPass,
bool DebugLogging);
292 bool VerifyEachPass,
bool DebugLogging);
294 bool VerifyEachPass,
bool DebugLogging);
296 bool VerifyEachPass,
bool DebugLogging);
297 bool parseAAPassName(AAManager &AA, StringRef
Name);
300 ArrayRef<PipelineElement> Pipeline,
301 bool VerifyEachPass,
bool DebugLogging);
303 ArrayRef<PipelineElement> Pipeline,
304 bool VerifyEachPass,
bool DebugLogging);
306 ArrayRef<PipelineElement> Pipeline,
307 bool VerifyEachPass,
bool DebugLogging);
309 ArrayRef<PipelineElement> Pipeline,
310 bool VerifyEachPass,
bool DebugLogging);
AAManager buildDefaultAAPipeline()
Build the default AAManager with the default alias analysis pipeline registered.
This header provides classes for managing a pipeline of passes over loops in LLVM IR...
void registerModuleAnalyses(ModuleAnalysisManager &MAM)
Registers all available module analysis passes.
OptimizationLevel
LLVM-provided high-level optimization levels.
PassBuilder(TargetMachine *TM=nullptr)
bool parseAAPipeline(AAManager &AA, StringRef PipelineText)
Parse a textual alias analysis pipeline into the provided AA manager.
Similar to O2 but tries to optimize for small code size instead of fast execution without triggering ...
This class provides access to building LLVM's passes.
ModulePassManager buildLTODefaultPipeline(OptimizationLevel Level, bool DebugLogging=false)
Build an LTO default optimization pipeline to a pass manager.
void registerLoopAnalyses(LoopAnalysisManager &LAM)
Registers all available loop analysis passes.
A very specialized mode that will optimize for code size at any and all costs.
void crossRegisterProxies(LoopAnalysisManager &LAM, FunctionAnalysisManager &FAM, CGSCCAnalysisManager &CGAM, ModuleAnalysisManager &MAM)
Cross register the analysis managers through their proxies.
static GCRegistry::Add< CoreCLRGC > E("coreclr","CoreCLR-compatible GC")
Disable as many optimizations as possible.
A manager for alias analyses.
ModulePassManager buildLTOPreLinkDefaultPipeline(OptimizationLevel Level, bool DebugLogging=false)
Build a pre-link, LTO-targeting default optimization pipeline to a pass manager.
void registerFunctionAnalyses(FunctionAnalysisManager &FAM)
Registers all available function analysis passes.
Optimize for fast execution as much as possible.
FunctionPassManager buildFunctionSimplificationPipeline(OptimizationLevel Level, bool DebugLogging=false)
Construct the core LLVM function canonicalization and simplification pipeline.
PassManager< LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &, CGSCCUpdateResult & > CGSCCPassManager
The CGSCC pass manager.
Optimize for fast execution as much as possible without triggering significant incremental compile ti...
bool parsePassPipeline(ModulePassManager &MPM, StringRef PipelineText, bool VerifyEachPass=true, bool DebugLogging=false)
Parse a textual pass pipeline description into a ModulePassManager.
PassManager< Function > FunctionPassManager
Convenience typedef for a pass manager over functions.
PassManager< Loop, LoopAnalysisManager, LoopStandardAnalysisResults &, LPMUpdater & > LoopPassManager
The Loop pass manager.
Manages a sequence of passes over a particular unit of IR.
This header provides classes for managing passes over SCCs of the call graph.
void registerCGSCCAnalyses(CGSCCAnalysisManager &CGAM)
Registers all available CGSCC analysis passes.
Optimize quickly without destroying debuggability.
Primary interface to the complete machine description for the target machine.
StringRef - Represent a constant reference to a string, i.e.
ModulePassManager buildPerModuleDefaultPipeline(OptimizationLevel Level, bool DebugLogging=false)
Build a per-module default optimization pipeline.
A container for analyses that lazily runs them and caches their results.
This header defines various interfaces for pass management in LLVM.
PassManager< Module > ModulePassManager
Convenience typedef for a pass manager over modules.