|
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 301 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 354 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 293 of file PassBuilderPipelines.cpp.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), 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 284 of file PassBuilderPipelines.cpp.
References llvm::PassManager< IRUnitT, AnalysisManagerT, ExtraArgTs >::addPass(), llvm::createModuleToFunctionPassAdaptor(), 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 338 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 350 of file PassBuilderPipelines.cpp.
References llvm::getInlineParamsFromOptLevel().
|
static |
Definition at line 272 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 328 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPostLink, and Phase.
Referenced by llvm::PassBuilder::buildModuleSimplificationPipeline().
|
static |
Definition at line 312 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPreLink, and Phase.
|
static |
Definition at line 322 of file PassBuilderPipelines.cpp.
References llvm::FullLTOPostLink, Phase, and llvm::ThinLTOPostLink.
Referenced by llvm::PassBuilder::buildFunctionSimplificationPipeline(), and llvm::PassBuilder::buildModuleOptimizationPipeline().
|
static |
Definition at line 306 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 333 of file PassBuilderPipelines.cpp.
References Phase, and llvm::ThinLTOPostLink.
Referenced by llvm::PassBuilder::buildModuleSimplificationPipeline().
|
static |
Definition at line 317 of file PassBuilderPipelines.cpp.
References Phase, and llvm::ThinLTOPreLink.
Referenced by llvm::PassBuilder::buildFunctionSimplificationPipeline(), llvm::PassBuilder::buildInlinerPipeline(), llvm::PassBuilder::buildModuleInlinerPipeline(), and llvm::PassBuilder::buildModuleSimplificationPipeline().