LLVM 20.0.0git
|
This file provides the implementation of the PassBuilder based on our static pass registry as well as related functionality. More...
#include "llvm/Passes/PassBuilder.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Analysis/AliasAnalysisEvaluator.h"
#include "llvm/Analysis/AliasSetTracker.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/Analysis/BasicAliasAnalysis.h"
#include "llvm/Analysis/BlockFrequencyInfo.h"
#include "llvm/Analysis/BranchProbabilityInfo.h"
#include "llvm/Analysis/CFGPrinter.h"
#include "llvm/Analysis/CFGSCCPrinter.h"
#include "llvm/Analysis/CGSCCPassManager.h"
#include "llvm/Analysis/CallGraph.h"
#include "llvm/Analysis/CallPrinter.h"
#include "llvm/Analysis/CostModel.h"
#include "llvm/Analysis/CtxProfAnalysis.h"
#include "llvm/Analysis/CycleAnalysis.h"
#include "llvm/Analysis/DDG.h"
#include "llvm/Analysis/DDGPrinter.h"
#include "llvm/Analysis/DXILMetadataAnalysis.h"
#include "llvm/Analysis/DXILResource.h"
#include "llvm/Analysis/Delinearization.h"
#include "llvm/Analysis/DemandedBits.h"
#include "llvm/Analysis/DependenceAnalysis.h"
#include "llvm/Analysis/DomPrinter.h"
#include "llvm/Analysis/DominanceFrontier.h"
#include "llvm/Analysis/FunctionPropertiesAnalysis.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/IRSimilarityIdentifier.h"
#include "llvm/Analysis/IVUsers.h"
#include "llvm/Analysis/InlineAdvisor.h"
#include "llvm/Analysis/InlineSizeEstimatorAnalysis.h"
#include "llvm/Analysis/InstCount.h"
#include "llvm/Analysis/LastRunTrackingAnalysis.h"
#include "llvm/Analysis/LazyCallGraph.h"
#include "llvm/Analysis/LazyValueInfo.h"
#include "llvm/Analysis/Lint.h"
#include "llvm/Analysis/LoopAccessAnalysis.h"
#include "llvm/Analysis/LoopCacheAnalysis.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/LoopNestAnalysis.h"
#include "llvm/Analysis/MemDerefPrinter.h"
#include "llvm/Analysis/MemoryDependenceAnalysis.h"
#include "llvm/Analysis/MemorySSA.h"
#include "llvm/Analysis/ModuleDebugInfoPrinter.h"
#include "llvm/Analysis/ModuleSummaryAnalysis.h"
#include "llvm/Analysis/MustExecute.h"
#include "llvm/Analysis/ObjCARCAliasAnalysis.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/Analysis/PhiValues.h"
#include "llvm/Analysis/PostDominators.h"
#include "llvm/Analysis/ProfileSummaryInfo.h"
#include "llvm/Analysis/RegionInfo.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
#include "llvm/Analysis/ScopedNoAliasAA.h"
#include "llvm/Analysis/StackLifetime.h"
#include "llvm/Analysis/StackSafetyAnalysis.h"
#include "llvm/Analysis/StructuralHash.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/TypeBasedAliasAnalysis.h"
#include "llvm/Analysis/UniformityAnalysis.h"
#include "llvm/CodeGen/AssignmentTrackingAnalysis.h"
#include "llvm/CodeGen/AtomicExpand.h"
#include "llvm/CodeGen/BasicBlockSectionsProfileReader.h"
#include "llvm/CodeGen/CallBrPrepare.h"
#include "llvm/CodeGen/CodeGenPrepare.h"
#include "llvm/CodeGen/ComplexDeinterleavingPass.h"
#include "llvm/CodeGen/DeadMachineInstructionElim.h"
#include "llvm/CodeGen/DwarfEHPrepare.h"
#include "llvm/CodeGen/EarlyIfConversion.h"
#include "llvm/CodeGen/EdgeBundles.h"
#include "llvm/CodeGen/ExpandLargeDivRem.h"
#include "llvm/CodeGen/ExpandLargeFpConvert.h"
#include "llvm/CodeGen/ExpandMemCmp.h"
#include "llvm/CodeGen/FinalizeISel.h"
#include "llvm/CodeGen/GCMetadata.h"
#include "llvm/CodeGen/GlobalMerge.h"
#include "llvm/CodeGen/GlobalMergeFunctions.h"
#include "llvm/CodeGen/HardwareLoops.h"
#include "llvm/CodeGen/IndirectBrExpand.h"
#include "llvm/CodeGen/InterleavedAccess.h"
#include "llvm/CodeGen/InterleavedLoadCombine.h"
#include "llvm/CodeGen/JMCInstrumenter.h"
#include "llvm/CodeGen/LiveDebugVariables.h"
#include "llvm/CodeGen/LiveIntervals.h"
#include "llvm/CodeGen/LiveRegMatrix.h"
#include "llvm/CodeGen/LiveStacks.h"
#include "llvm/CodeGen/LiveVariables.h"
#include "llvm/CodeGen/LocalStackSlotAllocation.h"
#include "llvm/CodeGen/LowerEmuTLS.h"
#include "llvm/CodeGen/MIRPrinter.h"
#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
#include "llvm/CodeGen/MachineCSE.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
#include "llvm/CodeGen/MachineLICM.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineOptimizationRemarkEmitter.h"
#include "llvm/CodeGen/MachinePassManager.h"
#include "llvm/CodeGen/MachinePostDominators.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineTraceMetrics.h"
#include "llvm/CodeGen/MachineVerifier.h"
#include "llvm/CodeGen/OptimizePHIs.h"
#include "llvm/CodeGen/PHIElimination.h"
#include "llvm/CodeGen/PeepholeOptimizer.h"
#include "llvm/CodeGen/PreISelIntrinsicLowering.h"
#include "llvm/CodeGen/RegAllocFast.h"
#include "llvm/CodeGen/RegUsageInfoCollector.h"
#include "llvm/CodeGen/RegUsageInfoPropagate.h"
#include "llvm/CodeGen/RegisterUsageInfo.h"
#include "llvm/CodeGen/SafeStack.h"
#include "llvm/CodeGen/SelectOptimize.h"
#include "llvm/CodeGen/ShadowStackGCLowering.h"
#include "llvm/CodeGen/SjLjEHPrepare.h"
#include "llvm/CodeGen/SlotIndexes.h"
#include "llvm/CodeGen/SpillPlacement.h"
#include "llvm/CodeGen/StackColoring.h"
#include "llvm/CodeGen/StackProtector.h"
#include "llvm/CodeGen/TailDuplication.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/CodeGen/TwoAddressInstructionPass.h"
#include "llvm/CodeGen/TypePromotion.h"
#include "llvm/CodeGen/VirtRegMap.h"
#include "llvm/CodeGen/WasmEHPrepare.h"
#include "llvm/CodeGen/WinEHPrepare.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/PrintPasses.h"
#include "llvm/IR/SafepointIRVerifier.h"
#include "llvm/IR/Verifier.h"
#include "llvm/IRPrinter/IRPrintingPasses.h"
#include "llvm/Passes/OptimizationLevel.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/Regex.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h"
#include "llvm/Transforms/CFGuard.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/BlockExtractor.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/ForceFunctionAttrs.h"
#include "llvm/Transforms/IPO/FunctionAttrs.h"
#include "llvm/Transforms/IPO/FunctionImport.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/IROutliner.h"
#include "llvm/Transforms/IPO/InferFunctionAttrs.h"
#include "llvm/Transforms/IPO/Inliner.h"
#include "llvm/Transforms/IPO/Internalize.h"
#include "llvm/Transforms/IPO/LoopExtractor.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/StripDeadPrototypes.h"
#include "llvm/Transforms/IPO/StripSymbols.h"
#include "llvm/Transforms/IPO/WholeProgramDevirt.h"
#include "llvm/Transforms/InstCombine/InstCombine.h"
#include "llvm/Transforms/Instrumentation/AddressSanitizer.h"
#include "llvm/Transforms/Instrumentation/BoundsChecking.h"
#include "llvm/Transforms/Instrumentation/CGProfile.h"
#include "llvm/Transforms/Instrumentation/ControlHeightReduction.h"
#include "llvm/Transforms/Instrumentation/DataFlowSanitizer.h"
#include "llvm/Transforms/Instrumentation/GCOVProfiler.h"
#include "llvm/Transforms/Instrumentation/HWAddressSanitizer.h"
#include "llvm/Transforms/Instrumentation/InstrOrderFile.h"
#include "llvm/Transforms/Instrumentation/InstrProfiling.h"
#include "llvm/Transforms/Instrumentation/KCFI.h"
#include "llvm/Transforms/Instrumentation/LowerAllowCheckPass.h"
#include "llvm/Transforms/Instrumentation/MemProfiler.h"
#include "llvm/Transforms/Instrumentation/MemorySanitizer.h"
#include "llvm/Transforms/Instrumentation/NumericalStabilitySanitizer.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/Instrumentation/RealtimeSanitizer.h"
#include "llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h"
#include "llvm/Transforms/Instrumentation/SanitizerCoverage.h"
#include "llvm/Transforms/Instrumentation/ThreadSanitizer.h"
#include "llvm/Transforms/Instrumentation/TypeSanitizer.h"
#include "llvm/Transforms/ObjCARC.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/ConstantHoisting.h"
#include "llvm/Transforms/Scalar/ConstraintElimination.h"
#include "llvm/Transforms/Scalar/CorrelatedValuePropagation.h"
#include "llvm/Transforms/Scalar/DCE.h"
#include "llvm/Transforms/Scalar/DFAJumpThreading.h"
#include "llvm/Transforms/Scalar/DeadStoreElimination.h"
#include "llvm/Transforms/Scalar/DivRemPairs.h"
#include "llvm/Transforms/Scalar/EarlyCSE.h"
#include "llvm/Transforms/Scalar/FlattenCFG.h"
#include "llvm/Transforms/Scalar/Float2Int.h"
#include "llvm/Transforms/Scalar/GVN.h"
#include "llvm/Transforms/Scalar/GuardWidening.h"
#include "llvm/Transforms/Scalar/IVUsersPrinter.h"
#include "llvm/Transforms/Scalar/IndVarSimplify.h"
#include "llvm/Transforms/Scalar/InductiveRangeCheckElimination.h"
#include "llvm/Transforms/Scalar/InferAddressSpaces.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/LoopAccessAnalysisPrinter.h"
#include "llvm/Transforms/Scalar/LoopBoundSplit.h"
#include "llvm/Transforms/Scalar/LoopDataPrefetch.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/LoopPredication.h"
#include "llvm/Transforms/Scalar/LoopRotation.h"
#include "llvm/Transforms/Scalar/LoopSimplifyCFG.h"
#include "llvm/Transforms/Scalar/LoopSink.h"
#include "llvm/Transforms/Scalar/LoopStrengthReduce.h"
#include "llvm/Transforms/Scalar/LoopTermFold.h"
#include "llvm/Transforms/Scalar/LoopUnrollAndJamPass.h"
#include "llvm/Transforms/Scalar/LoopUnrollPass.h"
#include "llvm/Transforms/Scalar/LoopVersioningLICM.h"
#include "llvm/Transforms/Scalar/LowerAtomicPass.h"
#include "llvm/Transforms/Scalar/LowerConstantIntrinsics.h"
#include "llvm/Transforms/Scalar/LowerExpectIntrinsic.h"
#include "llvm/Transforms/Scalar/LowerGuardIntrinsic.h"
#include "llvm/Transforms/Scalar/LowerMatrixIntrinsics.h"
#include "llvm/Transforms/Scalar/LowerWidenableCondition.h"
#include "llvm/Transforms/Scalar/MakeGuardsExplicit.h"
#include "llvm/Transforms/Scalar/MemCpyOptimizer.h"
#include "llvm/Transforms/Scalar/MergeICmps.h"
#include "llvm/Transforms/Scalar/MergedLoadStoreMotion.h"
#include "llvm/Transforms/Scalar/NaryReassociate.h"
#include "llvm/Transforms/Scalar/NewGVN.h"
#include "llvm/Transforms/Scalar/PartiallyInlineLibCalls.h"
#include "llvm/Transforms/Scalar/PlaceSafepoints.h"
#include "llvm/Transforms/Scalar/Reassociate.h"
#include "llvm/Transforms/Scalar/Reg2Mem.h"
#include "llvm/Transforms/Scalar/RewriteStatepointsForGC.h"
#include "llvm/Transforms/Scalar/SCCP.h"
#include "llvm/Transforms/Scalar/SROA.h"
#include "llvm/Transforms/Scalar/ScalarizeMaskedMemIntrin.h"
#include "llvm/Transforms/Scalar/Scalarizer.h"
#include "llvm/Transforms/Scalar/SeparateConstOffsetFromGEP.h"
#include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h"
#include "llvm/Transforms/Scalar/SimplifyCFG.h"
#include "llvm/Transforms/Scalar/Sink.h"
#include "llvm/Transforms/Scalar/SpeculativeExecution.h"
#include "llvm/Transforms/Scalar/StraightLineStrengthReduce.h"
#include "llvm/Transforms/Scalar/StructurizeCFG.h"
#include "llvm/Transforms/Scalar/TailRecursionElimination.h"
#include "llvm/Transforms/Scalar/WarnMissedTransforms.h"
#include "llvm/Transforms/Utils/AddDiscriminators.h"
#include "llvm/Transforms/Utils/AssumeBundleBuilder.h"
#include "llvm/Transforms/Utils/BreakCriticalEdges.h"
#include "llvm/Transforms/Utils/CanonicalizeAliases.h"
#include "llvm/Transforms/Utils/CanonicalizeFreezeInLoops.h"
#include "llvm/Transforms/Utils/CountVisits.h"
#include "llvm/Transforms/Utils/DXILUpgrade.h"
#include "llvm/Transforms/Utils/Debugify.h"
#include "llvm/Transforms/Utils/EntryExitInstrumenter.h"
#include "llvm/Transforms/Utils/ExtraPassManager.h"
#include "llvm/Transforms/Utils/FixIrreducible.h"
#include "llvm/Transforms/Utils/HelloWorld.h"
#include "llvm/Transforms/Utils/IRNormalizer.h"
#include "llvm/Transforms/Utils/InjectTLIMappings.h"
#include "llvm/Transforms/Utils/InstructionNamer.h"
#include "llvm/Transforms/Utils/LCSSA.h"
#include "llvm/Transforms/Utils/LibCallsShrinkWrap.h"
#include "llvm/Transforms/Utils/LoopSimplify.h"
#include "llvm/Transforms/Utils/LoopVersioning.h"
#include "llvm/Transforms/Utils/LowerGlobalDtors.h"
#include "llvm/Transforms/Utils/LowerIFunc.h"
#include "llvm/Transforms/Utils/LowerInvoke.h"
#include "llvm/Transforms/Utils/LowerSwitch.h"
#include "llvm/Transforms/Utils/Mem2Reg.h"
#include "llvm/Transforms/Utils/MetaRenamer.h"
#include "llvm/Transforms/Utils/MoveAutoInit.h"
#include "llvm/Transforms/Utils/NameAnonGlobals.h"
#include "llvm/Transforms/Utils/PredicateInfo.h"
#include "llvm/Transforms/Utils/RelLookupTableConverter.h"
#include "llvm/Transforms/Utils/StripGCRelocates.h"
#include "llvm/Transforms/Utils/StripNonLineTableDebugInfo.h"
#include "llvm/Transforms/Utils/SymbolRewriter.h"
#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
#include "llvm/Transforms/Utils/UnifyLoopExits.h"
#include "llvm/Transforms/Vectorize/LoadStoreVectorizer.h"
#include "llvm/Transforms/Vectorize/LoopIdiomVectorize.h"
#include "llvm/Transforms/Vectorize/LoopVectorize.h"
#include "llvm/Transforms/Vectorize/SLPVectorizer.h"
#include "llvm/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizer.h"
#include "llvm/Transforms/Vectorize/VectorCombine.h"
#include <optional>
#include "PassRegistry.def"
#include "llvm/Passes/MachinePassRegistry.def"
Go to the source code of this file.
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
Macros | |
#define | MODULE_PASS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) PIC->addClassToPassName(CLASS, NAME); |
#define | MODULE_ANALYSIS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | FUNCTION_PASS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) PIC->addClassToPassName(CLASS, NAME); |
#define | FUNCTION_ANALYSIS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | LOOPNEST_PASS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | LOOP_PASS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) PIC->addClassToPassName(CLASS, NAME); |
#define | LOOP_ANALYSIS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | CGSCC_PASS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) PIC->addClassToPassName(CLASS, NAME); |
#define | CGSCC_ANALYSIS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define | MODULE_ANALYSIS(NAME, CREATE_PASS) MAM.registerPass([&] { return CREATE_PASS; }); |
#define | CGSCC_ANALYSIS(NAME, CREATE_PASS) CGAM.registerPass([&] { return CREATE_PASS; }); |
#define | FUNCTION_ANALYSIS(NAME, CREATE_PASS) FAM.registerPass([&] { return CREATE_PASS; }); |
#define | MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) MFAM.registerPass([&] { return CREATE_PASS; }); |
#define | LOOP_ANALYSIS(NAME, CREATE_PASS) LAM.registerPass([&] { return CREATE_PASS; }); |
#define | MODULE_PASS(NAME, CREATE_PASS) |
#define | MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | MODULE_ANALYSIS(NAME, CREATE_PASS) |
#define | CGSCC_PASS(NAME, CREATE_PASS) |
#define | CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | CGSCC_ANALYSIS(NAME, CREATE_PASS) |
#define | FUNCTION_PASS(NAME, CREATE_PASS) |
#define | FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | FUNCTION_ANALYSIS(NAME, CREATE_PASS) |
#define | MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) |
#define | MACHINE_FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) |
#define | LOOPNEST_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | LOOP_ANALYSIS(NAME, CREATE_PASS) |
#define | MODULE_PASS(NAME, CREATE_PASS) |
#define | MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | MODULE_ANALYSIS(NAME, CREATE_PASS) |
#define | CGSCC_PASS(NAME, CREATE_PASS) |
#define | CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | FUNCTION_PASS(NAME, CREATE_PASS) |
#define | FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | LOOPNEST_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | CGSCC_PASS(NAME, CREATE_PASS) |
#define | CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | CGSCC_ANALYSIS(NAME, CREATE_PASS) |
#define | FUNCTION_PASS(NAME, CREATE_PASS) |
#define | FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | LOOPNEST_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | FUNCTION_PASS(NAME, CREATE_PASS) |
#define | FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | FUNCTION_ANALYSIS(NAME, CREATE_PASS) |
#define | LOOPNEST_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | LOOPNEST_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS(NAME, CREATE_PASS) |
#define | LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | LOOP_ANALYSIS(NAME, CREATE_PASS) |
#define | MACHINE_MODULE_PASS(NAME, CREATE_PASS) |
#define | MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) |
#define | MACHINE_FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) |
#define | MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) |
#define | MODULE_ALIAS_ANALYSIS(NAME, CREATE_PASS) |
#define | FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) |
#define | MODULE_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | MODULE_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) printPassName(NAME, PARAMS, OS); |
#define | MODULE_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | MODULE_ALIAS_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | CGSCC_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | CGSCC_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) printPassName(NAME, PARAMS, OS); |
#define | CGSCC_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | FUNCTION_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | FUNCTION_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) printPassName(NAME, PARAMS, OS); |
#define | FUNCTION_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | LOOPNEST_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | LOOP_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | LOOP_PASS_WITH_PARAMS(NAME, CLASS, CREATE_PASS, PARSER, PARAMS) printPassName(NAME, PARAMS, OS); |
#define | LOOP_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | MACHINE_MODULE_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | MACHINE_FUNCTION_PASS(NAME, CREATE_PASS) printPassName(NAME, OS); |
#define | MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) printPassName(NAME, OS); |
Functions | |
cl::opt< bool > | llvm::PrintPipelinePasses ("print-pipeline-passes", cl::desc("Print a '-passes' compatible string describing the pipeline " "(best-effort only).")) |
static std::optional< std::pair< bool, bool > > | parseFunctionPipelineName (StringRef Name) |
static std::optional< int > | parseDevirtPassName (StringRef Name) |
static std::optional< OptimizationLevel > | parseOptLevel (StringRef S) |
static bool | startsWithDefaultPipelineAliasPrefix (StringRef Name) |
Tests whether a pass name starts with a valid prefix for a default pipeline alias. | |
template<typename PassManagerT , typename CallbacksT > | |
static bool | callbacksAcceptPassName (StringRef Name, CallbacksT &Callbacks) |
Tests whether registered callbacks will accept a given pass name. | |
template<typename CallbacksT > | |
static bool | isModulePassName (StringRef Name, CallbacksT &Callbacks) |
template<typename CallbacksT > | |
static bool | isCGSCCPassName (StringRef Name, CallbacksT &Callbacks) |
template<typename CallbacksT > | |
static bool | isFunctionPassName (StringRef Name, CallbacksT &Callbacks) |
template<typename CallbacksT > | |
static bool | isMachineFunctionPassName (StringRef Name, CallbacksT &Callbacks) |
template<typename CallbacksT > | |
static bool | isLoopNestPassName (StringRef Name, CallbacksT &Callbacks, bool &UseMemorySSA) |
template<typename CallbacksT > | |
static bool | isLoopPassName (StringRef Name, CallbacksT &Callbacks, bool &UseMemorySSA) |
static void | printPassName (StringRef PassName, raw_ostream &OS) |
static void | printPassName (StringRef PassName, StringRef Params, raw_ostream &OS) |
Variables | |
static const Regex | DefaultAliasRegex ("^(default|thinlto-pre-link|thinlto|lto-pre-link|lto)<(O[0123sz])>$") |
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 PassBuilder.cpp.
#define CGSCC_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define CGSCC_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | CGAM.registerPass([&] { return CREATE_PASS; }); |
#define CGSCC_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define CGSCC_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define CGSCC_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define CGSCC_PASS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define CGSCC_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define CGSCC_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define CGSCC_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define CGSCC_PASS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define CGSCC_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) | PIC->addClassToPassName(CLASS, NAME); |
#define CGSCC_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define CGSCC_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define CGSCC_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define CGSCC_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) | printPassName(NAME, PARAMS, OS); |
#define FUNCTION_ALIAS_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define FUNCTION_ALIAS_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | FAM.registerPass([&] { return CREATE_PASS; }); |
#define FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define FUNCTION_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) | PIC->addClassToPassName(CLASS, NAME); |
#define FUNCTION_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define FUNCTION_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define FUNCTION_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define FUNCTION_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define FUNCTION_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) | printPassName(NAME, PARAMS, OS); |
#define LOOP_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define LOOP_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | LAM.registerPass([&] { return CREATE_PASS; }); |
#define LOOP_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOP_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOP_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define LOOP_PASS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define LOOP_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOP_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOP_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOP_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOP_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOP_PASS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define LOOP_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) | PIC->addClassToPassName(CLASS, NAME); |
#define LOOP_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define LOOP_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define LOOP_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define LOOP_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define LOOP_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define LOOP_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) | printPassName(NAME, PARAMS, OS); |
#define LOOPNEST_PASS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define LOOPNEST_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOPNEST_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOPNEST_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOPNEST_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOPNEST_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define LOOPNEST_PASS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define MACHINE_FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define MACHINE_FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | MFAM.registerPass([&] { return CREATE_PASS; }); |
#define MACHINE_FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MACHINE_FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MACHINE_FUNCTION_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define MACHINE_FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define MACHINE_FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MACHINE_FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MACHINE_FUNCTION_PASS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define MACHINE_FUNCTION_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define MACHINE_FUNCTION_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define MACHINE_MODULE_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MACHINE_MODULE_PASS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define MODULE_ALIAS_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MODULE_ALIAS_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define MODULE_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define MODULE_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | MAM.registerPass([&] { return CREATE_PASS; }); |
#define MODULE_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MODULE_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MODULE_ANALYSIS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define MODULE_PASS | ( | NAME, | |
CREATE_PASS | |||
) | PIC->addClassToPassName(decltype(CREATE_PASS)::name(), NAME); |
#define MODULE_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MODULE_PASS | ( | NAME, | |
CREATE_PASS | |||
) |
#define MODULE_PASS | ( | NAME, | |
CREATE_PASS | |||
) | printPassName(NAME, OS); |
#define MODULE_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) | PIC->addClassToPassName(CLASS, NAME); |
#define MODULE_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define MODULE_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) |
#define MODULE_PASS_WITH_PARAMS | ( | NAME, | |
CLASS, | |||
CREATE_PASS, | |||
PARSER, | |||
PARAMS | |||
) | printPassName(NAME, PARAMS, OS); |
|
static |
Tests whether registered callbacks will accept a given pass name.
When parsing a pipeline text, the type of the outermost pipeline may be omitted, in which case the type is automatically determined from the first pass name in the text. This may be a name that is handled through one of the callbacks. We check this through the oridinary parsing callbacks by setting up a dummy PassManager in order to not force the client to also handle this type of query.
Definition at line 1329 of file PassBuilder.cpp.
References Name.
|
static |
Definition at line 1372 of file PassBuilder.cpp.
References llvm::CallingConv::C, Name, and parseDevirtPassName().
Referenced by llvm::PassBuilder::parsePassPipeline().
|
static |
Definition at line 1399 of file PassBuilder.cpp.
References llvm::CallingConv::C, and Name.
Referenced by llvm::PassBuilder::parsePassPipeline().
|
static |
Definition at line 1445 of file PassBuilder.cpp.
References llvm::PassBuilder::checkParametrizedPassName(), and Name.
Referenced by llvm::PassBuilder::parsePassPipeline().
|
static |
Definition at line 1463 of file PassBuilder.cpp.
References llvm::PassBuilder::checkParametrizedPassName(), and Name.
Referenced by llvm::PassBuilder::parsePassPipeline().
|
static |
Definition at line 1422 of file PassBuilder.cpp.
References Name.
Referenced by llvm::PassBuilder::parsePassPipeline().
|
static |
Definition at line 1340 of file PassBuilder.cpp.
References llvm::CallingConv::C, DefaultAliasRegex, llvm::Regex::match(), Name, and startsWithDefaultPipelineAliasPrefix().
Referenced by llvm::PassBuilder::parsePassPipeline().
|
static |
Definition at line 553 of file PassBuilder.cpp.
References Name.
|
static |
Definition at line 583 of file PassBuilder.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), llvm::OptimizationLevel::O0, llvm::OptimizationLevel::O1, llvm::OptimizationLevel::O2, llvm::OptimizationLevel::O3, llvm::OptimizationLevel::Os, and llvm::OptimizationLevel::Oz.
|
static |
Definition at line 2306 of file PassBuilder.cpp.
|
static |
Definition at line 2309 of file PassBuilder.cpp.
Tests whether a pass name starts with a valid prefix for a default pipeline alias.
Definition at line 1315 of file PassBuilder.cpp.
References Name.
Referenced by isModulePassName().
|
static |
Referenced by isModulePassName().