|
LLVM 24.0.0git
|
This file provides the implementation of the PassBuilder based on our static pass registry as well as related functionality. More...
#include "PassesOptions.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/Analysis/BasicAliasAnalysis.h"#include "llvm/Analysis/CGSCCPassManager.h"#include "llvm/Analysis/FunctionPropertiesAnalysis.h"#include "llvm/Analysis/GlobalsModRef.h"#include "llvm/Analysis/InlineAdvisor.h"#include "llvm/Analysis/InstCount.h"#include "llvm/Analysis/ProfileSummaryInfo.h"#include "llvm/Analysis/ScopedNoAliasAA.h"#include "llvm/Analysis/TypeBasedAliasAnalysis.h"#include "llvm/IR/PassManager.h"#include "llvm/IR/Verifier.h"#include "llvm/Pass.h"#include "llvm/Passes/OptimizationLevel.h"#include "llvm/Passes/PassBuilder.h"#include "llvm/Passes/TriggerCrashPasses.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/PGOOptions.h"#include "llvm/Target/TargetMachine.h"#include "llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h"#include "llvm/Transforms/Coroutines/CoroAnnotationElide.h"#include "llvm/Transforms/Coroutines/CoroCleanup.h"#include "llvm/Transforms/Coroutines/CoroConditionalWrapper.h"#include "llvm/Transforms/Coroutines/CoroEarly.h"#include "llvm/Transforms/Coroutines/CoroElide.h"#include "llvm/Transforms/Coroutines/CoroSplit.h"#include "llvm/Transforms/HipStdPar/HipStdPar.h"#include "llvm/Transforms/IPO/AlwaysInliner.h"#include "llvm/Transforms/IPO/Annotation2Metadata.h"#include "llvm/Transforms/IPO/ArgumentPromotion.h"#include "llvm/Transforms/IPO/Attributor.h"#include "llvm/Transforms/IPO/CalledValuePropagation.h"#include "llvm/Transforms/IPO/ConstantMerge.h"#include "llvm/Transforms/IPO/CrossDSOCFI.h"#include "llvm/Transforms/IPO/DeadArgumentElimination.h"#include "llvm/Transforms/IPO/ElimAvailExtern.h"#include "llvm/Transforms/IPO/EmbedBitcodePass.h"#include "llvm/Transforms/IPO/ExpandVariadics.h"#include "llvm/Transforms/IPO/FatLTOCleanup.h"#include "llvm/Transforms/IPO/ForceFunctionAttrs.h"#include "llvm/Transforms/IPO/FunctionAttrs.h"#include "llvm/Transforms/IPO/GlobalDCE.h"#include "llvm/Transforms/IPO/GlobalOpt.h"#include "llvm/Transforms/IPO/GlobalSplit.h"#include "llvm/Transforms/IPO/HotColdSplitting.h"#include "llvm/Transforms/IPO/InferFunctionAttrs.h"#include "llvm/Transforms/IPO/Inliner.h"#include "llvm/Transforms/IPO/Instrumentor.h"#include "llvm/Transforms/IPO/LowerTypeTests.h"#include "llvm/Transforms/IPO/MemProfContextDisambiguation.h"#include "llvm/Transforms/IPO/MergeFunctions.h"#include "llvm/Transforms/IPO/ModuleInliner.h"#include "llvm/Transforms/IPO/OpenMPOpt.h"#include "llvm/Transforms/IPO/PartialInlining.h"#include "llvm/Transforms/IPO/SCCP.h"#include "llvm/Transforms/IPO/SampleProfile.h"#include "llvm/Transforms/IPO/SampleProfileProbe.h"#include "llvm/Transforms/IPO/WholeProgramDevirt.h"#include "llvm/Transforms/InstCombine/InstCombine.h"#include "llvm/Transforms/Instrumentation/AllocToken.h"#include "llvm/Transforms/Instrumentation/CGProfile.h"#include "llvm/Transforms/Instrumentation/ControlHeightReduction.h"#include "llvm/Transforms/Instrumentation/InstrProfiling.h"#include "llvm/Transforms/Instrumentation/MemProfInstrumentation.h"#include "llvm/Transforms/Instrumentation/MemProfUse.h"#include "llvm/Transforms/Instrumentation/PGOCtxProfFlattening.h"#include "llvm/Transforms/Instrumentation/PGOCtxProfLowering.h"#include "llvm/Transforms/Instrumentation/PGOForceFunctionAttrs.h"#include "llvm/Transforms/Instrumentation/PGOInstrumentation.h"#include "llvm/Transforms/Scalar/ADCE.h"#include "llvm/Transforms/Scalar/AlignmentFromAssumptions.h"#include "llvm/Transforms/Scalar/AnnotationRemarks.h"#include "llvm/Transforms/Scalar/BDCE.h"#include "llvm/Transforms/Scalar/CallSiteSplitting.h"#include "llvm/Transforms/Scalar/ConstraintElimination.h"#include "llvm/Transforms/Scalar/CorrelatedValuePropagation.h"#include "llvm/Transforms/Scalar/DFAJumpThreading.h"#include "llvm/Transforms/Scalar/DeadStoreElimination.h"#include "llvm/Transforms/Scalar/DivRemPairs.h"#include "llvm/Transforms/Scalar/DropUnnecessaryAssumes.h"#include "llvm/Transforms/Scalar/EarlyCSE.h"#include "llvm/Transforms/Scalar/ExpandMemCmp.h"#include "llvm/Transforms/Scalar/Float2Int.h"#include "llvm/Transforms/Scalar/GVN.h"#include "llvm/Transforms/Scalar/GVNHoist.h"#include "llvm/Transforms/Scalar/GVNSink.h"#include "llvm/Transforms/Scalar/IndVarSimplify.h"#include "llvm/Transforms/Scalar/InferAlignment.h"#include "llvm/Transforms/Scalar/InstSimplifyPass.h"#include "llvm/Transforms/Scalar/JumpTableToSwitch.h"#include "llvm/Transforms/Scalar/JumpThreading.h"#include "llvm/Transforms/Scalar/LICM.h"#include "llvm/Transforms/Scalar/LoopDeletion.h"#include "llvm/Transforms/Scalar/LoopDistribute.h"#include "llvm/Transforms/Scalar/LoopFlatten.h"#include "llvm/Transforms/Scalar/LoopFuse.h"#include "llvm/Transforms/Scalar/LoopIdiomRecognize.h"#include "llvm/Transforms/Scalar/LoopInstSimplify.h"#include "llvm/Transforms/Scalar/LoopInterchange.h"#include "llvm/Transforms/Scalar/LoopLoadElimination.h"#include "llvm/Transforms/Scalar/LoopPassManager.h"#include "llvm/Transforms/Scalar/LoopRotation.h"#include "llvm/Transforms/Scalar/LoopSimplifyCFG.h"#include "llvm/Transforms/Scalar/LoopSink.h"#include "llvm/Transforms/Scalar/LoopUnrollAndJamPass.h"#include "llvm/Transforms/Scalar/LoopUnrollPass.h"#include "llvm/Transforms/Scalar/LoopVersioningLICM.h"#include "llvm/Transforms/Scalar/LowerConstantIntrinsics.h"#include "llvm/Transforms/Scalar/LowerExpectIntrinsic.h"#include "llvm/Transforms/Scalar/LowerMatrixIntrinsics.h"#include "llvm/Transforms/Scalar/MemCpyOptimizer.h"#include "llvm/Transforms/Scalar/MergeICmps.h"#include "llvm/Transforms/Scalar/MergedLoadStoreMotion.h"#include "llvm/Transforms/Scalar/NewGVN.h"#include "llvm/Transforms/Scalar/Reassociate.h"#include "llvm/Transforms/Scalar/SCCP.h"#include "llvm/Transforms/Scalar/SROA.h"#include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h"#include "llvm/Transforms/Scalar/SimplifyCFG.h"#include "llvm/Transforms/Scalar/SpeculativeExecution.h"#include "llvm/Transforms/Scalar/TailRecursionElimination.h"#include "llvm/Transforms/Scalar/WarnMissedTransforms.h"#include "llvm/Transforms/Utils/AddDiscriminators.h"#include "llvm/Transforms/Utils/AssignGUID.h"#include "llvm/Transforms/Utils/AssumeBundleBuilder.h"#include "llvm/Transforms/Utils/CanonicalizeAliases.h"#include "llvm/Transforms/Utils/CountVisits.h"#include "llvm/Transforms/Utils/EntryExitInstrumenter.h"#include "llvm/Transforms/Utils/ExtraPassManager.h"#include "llvm/Transforms/Utils/InjectTLIMappings.h"#include "llvm/Transforms/Utils/LibCallsShrinkWrap.h"#include "llvm/Transforms/Utils/LowerCommentStringPass.h"#include "llvm/Transforms/Utils/Mem2Reg.h"#include "llvm/Transforms/Utils/MoveAutoInit.h"#include "llvm/Transforms/Utils/NameAnonGlobals.h"#include "llvm/Transforms/Utils/ProfileVerify.h"#include "llvm/Transforms/Utils/RelLookupTableConverter.h"#include "llvm/Transforms/Utils/SimplifyCFGOptions.h"#include "llvm/Transforms/Vectorize/LoopVectorize.h"#include "llvm/Transforms/Vectorize/SLPVectorizer.h"#include "llvm/Transforms/Vectorize/VectorCombine.h"Go to the source code of this file.
Namespaces | |
| namespace | llvm |
| This is an optimization pass for GlobalISel generic memory operations. | |
Functions | |
| static void | instructionCountersPass (ModulePassManager &MPM, bool IsPreOptimization) |
| static void | addPipelineStartPasses (ModulePassManager &MPM, const PassesOptions &Opts) |
| static void | addPipelineEndPasses (ModulePassManager &MPM, const PassesOptions &Opts) |
| static void | addAnnotationRemarksPass (ModulePassManager &MPM) |
| static bool | isLTOPreLink (ThinOrFullLTOPhase Phase) |
| static bool | isFullLTOPreLink (ThinOrFullLTOPhase Phase) |
| static bool | isThinLTOPreLink (ThinOrFullLTOPhase Phase) |
| static bool | isLTOPostLink (ThinOrFullLTOPhase Phase) |
| static bool | isFullLTOPostLink (ThinOrFullLTOPhase Phase) |
| static bool | isThinLTOPostLink (ThinOrFullLTOPhase Phase) |
| static CoroConditionalWrapper | buildCoroWrapper (ThinOrFullLTOPhase Phase) |
| static InlineParams | getInlineParamsFromOptLevel (OptimizationLevel Level) |
| static void | addModuleInlinerPass (ModulePassManager &MPM, const PassesOptions &Opts, OptimizationLevel Level, ThinOrFullLTOPhase Phase) |
This file provides the implementation of the PassBuilder based on our static pass registry as well as related functionality.
It also provides helpers to aid in analyzing, debugging, and testing passes and pass pipelines.
Definition in file PassBuilderPipelines.cpp.
|
static |
Definition at line 306 of file PassBuilderPipelines.cpp.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), and llvm::createModuleToFunctionPassAdaptor().
Referenced by llvm::PassBuilder::buildFatLTODefaultPipeline(), llvm::PassBuilder::buildLTODefaultPipeline(), llvm::PassBuilder::buildO0DefaultPipeline(), llvm::PassBuilder::buildPerModuleDefaultPipeline(), llvm::PassBuilder::buildThinLTODefaultPipeline(), and llvm::PassBuilder::buildThinLTOPreLinkDefaultPipeline().
|
static |
Definition at line 359 of file PassBuilderPipelines.cpp.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), llvm::CGSCCInliner, llvm::getInlineParamsFromOptLevel(), and Phase.
Referenced by llvm::PassBuilder::buildLTODefaultPipeline(), and llvm::PassBuilder::buildModuleOptimizationPipeline().
|
static |
Definition at line 298 of file PassBuilderPipelines.cpp.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), llvm::EnableProfcheckInPipeline, and instructionCountersPass().
Referenced by llvm::PassBuilder::buildFatLTODefaultPipeline(), llvm::PassBuilder::buildLTODefaultPipeline(), llvm::PassBuilder::buildO0DefaultPipeline(), llvm::PassBuilder::buildPerModuleDefaultPipeline(), llvm::PassBuilder::buildThinLTODefaultPipeline(), and llvm::PassBuilder::buildThinLTOPreLinkDefaultPipeline().
|
static |
Definition at line 289 of file PassBuilderPipelines.cpp.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), llvm::createModuleToFunctionPassAdaptor(), llvm::EnableProfcheckInPipeline, and instructionCountersPass().
Referenced by llvm::PassBuilder::buildFatLTODefaultPipeline(), llvm::PassBuilder::buildLTODefaultPipeline(), llvm::PassBuilder::buildO0DefaultPipeline(), llvm::PassBuilder::buildPerModuleDefaultPipeline(), llvm::PassBuilder::buildThinLTODefaultPipeline(), and llvm::PassBuilder::buildThinLTOPreLinkDefaultPipeline().
|
static |
Definition at line 343 of file PassBuilderPipelines.cpp.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), llvm::createModuleToPostOrderCGSCCPassAdaptor(), and Phase.
Referenced by llvm::PassBuilder::buildLTODefaultPipeline(), llvm::PassBuilder::buildO0DefaultPipeline(), and llvm::PassBuilder::buildThinLTODefaultPipeline().
|
static |
Definition at line 355 of file PassBuilderPipelines.cpp.
References llvm::getInlineParamsFromOptLevel().
|
static |
Definition at line 277 of file PassBuilderPipelines.cpp.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), llvm::AreStatisticsEnabled(), and llvm::createModuleToFunctionPassAdaptor().
Referenced by addPipelineEndPasses(), and addPipelineStartPasses().
|
static |
Definition at line 333 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPostLink, and Phase.
Referenced by llvm::PassBuilder::buildModuleSimplificationPipeline().
|
static |
Definition at line 317 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPreLink, and Phase.
|
static |
Definition at line 327 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPostLink, Phase, and llvm::ThinLTOPostLink.
Referenced by llvm::PassBuilder::buildFunctionSimplificationPipeline(), and llvm::PassBuilder::buildModuleOptimizationPipeline().
|
static |
Definition at line 311 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPreLink, Phase, and llvm::ThinLTOPreLink.
Referenced by llvm::PassBuilder::buildFunctionSimplificationPipeline(), llvm::PassBuilder::buildInlinerPipeline(), llvm::PassBuilder::buildModuleInlinerPipeline(), llvm::PassBuilder::buildModuleOptimizationPipeline(), llvm::PassBuilder::buildModuleSimplificationPipeline(), llvm::PassBuilder::buildO0DefaultPipeline(), llvm::PassBuilder::buildPerModuleDefaultPipeline(), and llvm::AMDGPUTargetMachine::registerPassBuilderCallbacks().
|
static |
Definition at line 338 of file PassBuilderPipelines.cpp.
References Phase, and llvm::ThinLTOPostLink.
Referenced by llvm::PassBuilder::buildModuleSimplificationPipeline().
|
static |
Definition at line 322 of file PassBuilderPipelines.cpp.
References Phase, and llvm::ThinLTOPreLink.
Referenced by llvm::PassBuilder::buildFunctionSimplificationPipeline(), llvm::PassBuilder::buildInlinerPipeline(), llvm::PassBuilder::buildModuleInlinerPipeline(), and llvm::PassBuilder::buildModuleSimplificationPipeline().