|
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/CallGraphSCCPass.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 304 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 357 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 296 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 287 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 341 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 353 of file PassBuilderPipelines.cpp.
References llvm::getInlineParamsFromOptLevel().
|
static |
Definition at line 275 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 331 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPostLink, and Phase.
Referenced by llvm::PassBuilder::buildModuleSimplificationPipeline().
|
static |
Definition at line 315 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPreLink, and Phase.
|
static |
Definition at line 325 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPostLink, Phase, and llvm::ThinLTOPostLink.
Referenced by llvm::PassBuilder::buildFunctionSimplificationPipeline(), and llvm::PassBuilder::buildModuleOptimizationPipeline().
|
static |
Definition at line 309 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 336 of file PassBuilderPipelines.cpp.
References Phase, and llvm::ThinLTOPostLink.
Referenced by llvm::PassBuilder::buildModuleSimplificationPipeline().
|
static |
Definition at line 320 of file PassBuilderPipelines.cpp.
References Phase, and llvm::ThinLTOPreLink.
Referenced by llvm::PassBuilder::buildFunctionSimplificationPipeline(), llvm::PassBuilder::buildInlinerPipeline(), llvm::PassBuilder::buildModuleInlinerPipeline(), and llvm::PassBuilder::buildModuleSimplificationPipeline().