[llvm] [PassManager] Make passes inherit from MandatoryPassInfoMixin/OptionalPassInfoMixin (PR #192120)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 14 12:59:52 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-debuginfo
Author: Arthur Eubanks (aeubanks)
<details>
<summary>Changes</summary>
It's very easy to forget to add `isRequired() { return true; }` for passes that must be run on all IR, rather than e.g. being skipped on optnone functions.
This PR adds MandatoryPassInfoMixin/OptionalPassInfoMixin which have `isRequired()`, and the long term vision is there to be no default `isRequired()` on PassInfoMixin.
However, for out-of-tree migration purposes, we leave a `isRequired() { return false; }` for now in PassInfoMixin.
---
Patch is 367.06 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/192120.diff
439 Files Affected:
- (modified) llvm/docs/WritingAnLLVMNewPMPass.rst (+11-8)
- (modified) llvm/examples/Bye/Bye.cpp (+1-1)
- (modified) llvm/examples/IRTransforms/SimplifyCFG.cpp (+1-1)
- (modified) llvm/include/llvm/Analysis/AliasAnalysisEvaluator.h (+1-1)
- (modified) llvm/include/llvm/Analysis/AliasSetTracker.h (+2-2)
- (modified) llvm/include/llvm/Analysis/AssumptionCache.h (+2-3)
- (modified) llvm/include/llvm/Analysis/BlockFrequencyInfo.h (+1-3)
- (modified) llvm/include/llvm/Analysis/BranchProbabilityInfo.h (+1-3)
- (modified) llvm/include/llvm/Analysis/CFGPrinter.h (+4-8)
- (modified) llvm/include/llvm/Analysis/CFGSCCPrinter.h (+1-2)
- (modified) llvm/include/llvm/Analysis/CGSCCPassManager.h (+7-10)
- (modified) llvm/include/llvm/Analysis/CallGraph.h (+3-6)
- (modified) llvm/include/llvm/Analysis/CallPrinter.h (+3-4)
- (modified) llvm/include/llvm/Analysis/CostModel.h (+2-3)
- (modified) llvm/include/llvm/Analysis/CtxProfAnalysis.h (+2-3)
- (modified) llvm/include/llvm/Analysis/CycleAnalysis.h (+4-4)
- (modified) llvm/include/llvm/Analysis/DDG.h (+2-2)
- (modified) llvm/include/llvm/Analysis/DDGPrinter.h (+1-2)
- (modified) llvm/include/llvm/Analysis/DOTGraphTraitsPass.h (+4-4)
- (modified) llvm/include/llvm/Analysis/DXILMetadataAnalysis.h (+1-3)
- (modified) llvm/include/llvm/Analysis/DXILResource.h (+2-3)
- (modified) llvm/include/llvm/Analysis/Delinearization.h (+1-2)
- (modified) llvm/include/llvm/Analysis/DemandedBits.h (+2-3)
- (modified) llvm/include/llvm/Analysis/DependenceAnalysis.h (+1-3)
- (modified) llvm/include/llvm/Analysis/DominanceFrontier.h (+1-3)
- (modified) llvm/include/llvm/Analysis/FunctionPropertiesAnalysis.h (+2-4)
- (modified) llvm/include/llvm/Analysis/GlobalsModRef.h (+1-1)
- (modified) llvm/include/llvm/Analysis/HashRecognize.h (+1-1)
- (modified) llvm/include/llvm/Analysis/IR2Vec.h (+3-4)
- (modified) llvm/include/llvm/Analysis/IRSimilarityIdentifier.h (+1-2)
- (modified) llvm/include/llvm/Analysis/InlineAdvisor.h (+1-2)
- (modified) llvm/include/llvm/Analysis/InlineCost.h (+1-2)
- (modified) llvm/include/llvm/Analysis/InstCount.h (+1-1)
- (modified) llvm/include/llvm/Analysis/KernelInfo.h (+1-3)
- (modified) llvm/include/llvm/Analysis/LazyCallGraph.h (+2-6)
- (modified) llvm/include/llvm/Analysis/LazyValueInfo.h (+1-3)
- (modified) llvm/include/llvm/Analysis/Lint.h (+1-1)
- (modified) llvm/include/llvm/Analysis/LoopCacheAnalysis.h (+2-3)
- (modified) llvm/include/llvm/Analysis/LoopInfo.h (+2-4)
- (modified) llvm/include/llvm/Analysis/LoopNestAnalysis.h (+1-3)
- (modified) llvm/include/llvm/Analysis/MemDerefPrinter.h (+1-2)
- (modified) llvm/include/llvm/Analysis/MemorySSA.h (+4-8)
- (modified) llvm/include/llvm/Analysis/ModuleDebugInfoPrinter.h (+1-2)
- (modified) llvm/include/llvm/Analysis/MustExecute.h (+3-4)
- (modified) llvm/include/llvm/Analysis/PhiValues.h (+2-2)
- (modified) llvm/include/llvm/Analysis/PostDominators.h (+1-3)
- (modified) llvm/include/llvm/Analysis/ProfileSummaryInfo.h (+1-2)
- (modified) llvm/include/llvm/Analysis/RegionInfo.h (+3-5)
- (modified) llvm/include/llvm/Analysis/ScalarEvolution.h (+2-5)
- (modified) llvm/include/llvm/Analysis/ScalarEvolutionDivision.h (+2-1)
- (modified) llvm/include/llvm/Analysis/StackLifetime.h (+2-2)
- (modified) llvm/include/llvm/Analysis/StackSafetyAnalysis.h (+3-4)
- (modified) llvm/include/llvm/Analysis/StructuralHash.h (+1-3)
- (modified) llvm/include/llvm/Analysis/UniformityAnalysis.h (+1-3)
- (modified) llvm/include/llvm/Bitcode/BitcodeWriterPass.h (+1-4)
- (modified) llvm/include/llvm/CodeGen/AssignmentTrackingAnalysis.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/AtomicExpand.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/BranchFoldingPass.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/BranchRelaxation.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/CodeGenPrepare.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/ComplexDeinterleavingPass.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/DeadMachineInstructionElim.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/DetectDeadLanes.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/DwarfEHPrepare.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/EarlyIfConversion.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/ExpandIRInsts.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/ExpandPostRAPseudos.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/ExpandReductions.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/FEntryInserter.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/FinalizeISel.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/FixupStatepointCallerSaved.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/GCEmptyBasicBlocks.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/GCMetadata.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/GlobalISel/GISelValueTracking.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/GlobalMerge.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/GlobalMergeFunctions.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/HardwareLoops.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/IndirectBrExpand.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/InitUndef.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/InlineAsmPrepare.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/InterleavedAccess.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/InterleavedLoadCombine.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/JMCInstrumenter.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/LiveDebugValuesPass.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/LiveDebugVariables.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/LiveIntervals.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/LiveStacks.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/LiveVariables.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/LocalStackSlotAllocation.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/LowerEmuTLS.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/MIRPrinter.h (+2-4)
- (modified) llvm/include/llvm/CodeGen/MachineBlockFrequencyInfo.h (+1-3)
- (modified) llvm/include/llvm/CodeGen/MachineBlockPlacement.h (+2-4)
- (modified) llvm/include/llvm/CodeGen/MachineBranchProbabilityInfo.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/MachineCSE.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/MachineCopyPropagation.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/MachineCycleAnalysis.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/MachineDominators.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/MachineFunctionAnalysis.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/MachineInstrBundle.h (+3-2)
- (modified) llvm/include/llvm/CodeGen/MachineLICM.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/MachineLateInstrsCleanup.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/MachineLoopInfo.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/MachinePassManager.h (+1-3)
- (modified) llvm/include/llvm/CodeGen/MachinePostDominators.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/MachineScheduler.h (+3-2)
- (modified) llvm/include/llvm/CodeGen/MachineSink.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/MachineTraceMetrics.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/MachineUniformityAnalysis.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/MachineVerifier.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/OptimizePHIs.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/PEI.h (+1-3)
- (modified) llvm/include/llvm/CodeGen/PHIElimination.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/PatchableFunction.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/PeepholeOptimizer.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/PostRAHazardRecognizer.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/PostRAMachineSink.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/PostRASchedulerList.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/PreISelIntrinsicLowering.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/ProcessImplicitDefs.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/ReachingDefAnalysis.h (+2-3)
- (modified) llvm/include/llvm/CodeGen/RegAllocFast.h (+1-3)
- (modified) llvm/include/llvm/CodeGen/RegAllocGreedyPass.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/RegUsageInfoPropagate.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/RegisterCoalescerPass.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/RegisterUsageInfo.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/RemoveLoadsIntoFakeUses.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/RemoveRedundantDebugValues.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/RenameIndependentSubregs.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/ReplaceWithVeclib.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/SafeStack.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/SanitizerBinaryMetadata.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/SelectOptimize.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/SelectionDAGISel.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/ShadowStackGCLowering.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/ShrinkWrap.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/SjLjEHPrepare.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/SlotIndexes.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/StackColoring.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/StackFrameLayoutAnalysisPass.h (+1-2)
- (modified) llvm/include/llvm/CodeGen/StackProtector.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/StackSlotColoring.h (+2-1)
- (modified) llvm/include/llvm/CodeGen/TailDuplication.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/TwoAddressInstructionPass.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/TypePromotion.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/UnreachableBlockElim.h (+2-2)
- (modified) llvm/include/llvm/CodeGen/VirtRegMap.h (+3-5)
- (modified) llvm/include/llvm/CodeGen/WasmEHPrepare.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/WinEHPrepare.h (+1-1)
- (modified) llvm/include/llvm/CodeGen/XRayInstrumentation.h (+2-2)
- (modified) llvm/include/llvm/IR/DebugInfo.h (+2-1)
- (modified) llvm/include/llvm/IR/Dominators.h (+3-5)
- (modified) llvm/include/llvm/IR/PassInstrumentation.h (+1-6)
- (modified) llvm/include/llvm/IR/PassManager.h (+26-12)
- (modified) llvm/include/llvm/IR/PassManagerInternal.h (+5-12)
- (modified) llvm/include/llvm/IR/SafepointIRVerifier.h (+2-3)
- (modified) llvm/include/llvm/IR/Verifier.h (+1-2)
- (modified) llvm/include/llvm/IRPrinter/IRPrintingPasses.h (+2-4)
- (modified) llvm/include/llvm/Passes/CodeGenPassBuilder.h (+3-3)
- (modified) llvm/include/llvm/Passes/PassBuilder.h (+7-6)
- (modified) llvm/include/llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h (+1-1)
- (modified) llvm/include/llvm/Transforms/CFGuard.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Coroutines/CoroAnnotationElide.h (+2-3)
- (modified) llvm/include/llvm/Transforms/Coroutines/CoroCleanup.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Coroutines/CoroConditionalWrapper.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Coroutines/CoroEarly.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Coroutines/CoroElide.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Coroutines/CoroSplit.h (+1-3)
- (modified) llvm/include/llvm/Transforms/HipStdPar/HipStdPar.h (+4-9)
- (modified) llvm/include/llvm/Transforms/IPO/AlwaysInliner.h (+1-2)
- (modified) llvm/include/llvm/Transforms/IPO/Annotation2Metadata.h (+2-1)
- (modified) llvm/include/llvm/Transforms/IPO/ArgumentPromotion.h (+2-1)
- (modified) llvm/include/llvm/Transforms/IPO/Attributor.h (+4-4)
- (modified) llvm/include/llvm/Transforms/IPO/BlockExtractor.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/CalledValuePropagation.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/ConstantMerge.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/CrossDSOCFI.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/ElimAvailExtern.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/EmbedBitcodePass.h (+1-3)
- (modified) llvm/include/llvm/Transforms/IPO/ExpandVariadics.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/ExtractGV.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/FatLTOCleanup.h (+1-2)
- (modified) llvm/include/llvm/Transforms/IPO/ForceFunctionAttrs.h (+1-2)
- (modified) llvm/include/llvm/Transforms/IPO/FunctionAttrs.h (+4-3)
- (modified) llvm/include/llvm/Transforms/IPO/FunctionImport.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/GlobalDCE.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/GlobalOpt.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/GlobalSplit.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/HotColdSplitting.h (+2-1)
- (modified) llvm/include/llvm/Transforms/IPO/IROutliner.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/InferFunctionAttrs.h (+1-2)
- (modified) llvm/include/llvm/Transforms/IPO/Inliner.h (+2-2)
- (modified) llvm/include/llvm/Transforms/IPO/Internalize.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/LoopExtractor.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/LowerTypeTests.h (+4-3)
- (modified) llvm/include/llvm/Transforms/IPO/MemProfContextDisambiguation.h (+2-2)
- (modified) llvm/include/llvm/Transforms/IPO/MergeFunctions.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/ModuleInliner.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/OpenMPOpt.h (+2-2)
- (modified) llvm/include/llvm/Transforms/IPO/PartialInlining.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/SCCP.h (+1-1)
- (modified) llvm/include/llvm/Transforms/IPO/SampleProfile.h (+2-1)
- (modified) llvm/include/llvm/Transforms/IPO/SampleProfileProbe.h (+4-2)
- (modified) llvm/include/llvm/Transforms/IPO/StripDeadPrototypes.h (+2-2)
- (modified) llvm/include/llvm/Transforms/IPO/StripSymbols.h (+6-5)
- (modified) llvm/include/llvm/Transforms/IPO/ThinLTOBitcodeWriter.h (+1-3)
- (modified) llvm/include/llvm/Transforms/IPO/WholeProgramDevirt.h (+2-1)
- (modified) llvm/include/llvm/Transforms/InstCombine/InstCombine.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/AllocToken.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/BoundsChecking.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/CGProfile.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Instrumentation/ControlHeightReduction.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/DataFlowSanitizer.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/GCOVProfiler.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Instrumentation/HWAddressSanitizer.h (+3-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/InstrProfiling.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Instrumentation/KCFI.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/LowerAllowCheckPass.h (+1-3)
- (modified) llvm/include/llvm/Transforms/Instrumentation/MemProfInstrumentation.h (+3-4)
- (modified) llvm/include/llvm/Transforms/Instrumentation/MemProfUse.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Instrumentation/MemorySanitizer.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/NumericalStabilitySanitizer.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/PGOCtxProfFlattening.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Instrumentation/PGOCtxProfLowering.h (+4-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/PGOForceFunctionAttrs.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Instrumentation/PGOInstrumentation.h (+8-5)
- (modified) llvm/include/llvm/Transforms/Instrumentation/RealtimeSanitizer.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/SanitizerCoverage.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Instrumentation/ThreadSanitizer.h (+3-4)
- (modified) llvm/include/llvm/Transforms/Instrumentation/TypeSanitizer.h (+1-2)
- (modified) llvm/include/llvm/Transforms/ObjCARC.h (+4-4)
- (modified) llvm/include/llvm/Transforms/Scalar/ADCE.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/AlignmentFromAssumptions.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/AnnotationRemarks.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Scalar/BDCE.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/CallSiteSplitting.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/ConstantHoisting.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/ConstraintElimination.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/CorrelatedValuePropagation.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/DCE.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Scalar/DFAJumpThreading.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/DeadStoreElimination.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/DivRemPairs.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Scalar/DropUnnecessaryAssumes.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/EarlyCSE.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/ExpandMemCmp.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/FlattenCFG.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/Float2Int.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/GVN.h (+3-3)
- (modified) llvm/include/llvm/Transforms/Scalar/GuardWidening.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/IVUsersPrinter.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Scalar/IndVarSimplify.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/InductiveRangeCheckElimination.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/InferAddressSpaces.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/InferAlignment.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/InstSimplifyPass.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/JumpTableToSwitch.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/JumpThreading.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LICM.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopBoundSplit.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopDataPrefetch.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopDeletion.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopDistribute.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopFlatten.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopFuse.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopIdiomRecognize.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopInstSimplify.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopInterchange.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopLoadElimination.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopPassManager.h (+4-8)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopPredication.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopRotation.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopSimplifyCFG.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopSink.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopStrengthReduce.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopTermFold.h (+1-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopUnrollAndJamPass.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Scalar/LoopVersioningLICM.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/LowerAtomicPass.h (+1-3)
- (modified) llvm/include/llvm/Transforms/Scalar/LowerConstantIntrinsics.h (+2-3)
- (modified) llvm/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Scalar/LowerGuardIntrinsic.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Scalar/LowerMatrixIntrinsics.h (+1-2)
- (modified) llvm/include/llvm/Transforms/Scalar/LowerWidenableCondition.h (+2-2)
- (modified) llvm/include/llvm/Transforms/Scalar/MakeGuardsExplicit.h (+2-1)
- (modified) llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h (+1-1)
``````````diff
diff --git a/llvm/docs/WritingAnLLVMNewPMPass.rst b/llvm/docs/WritingAnLLVMNewPMPass.rst
index ea30d637347f1..b3f5c2ecf98cc 100644
--- a/llvm/docs/WritingAnLLVMNewPMPass.rst
+++ b/llvm/docs/WritingAnLLVMNewPMPass.rst
@@ -25,7 +25,8 @@ Unlike passes under the legacy pass manager where the pass interface is
defined via inheritance, passes under the new pass manager rely on
concept-based polymorphism, meaning there is no explicit interface (see
comments in ``PassManager.h`` for more details). All LLVM passes inherit from
-the CRTP mix-in ``PassInfoMixin<PassT>``. The pass should have a ``run()``
+the CRTP mix-in ``OptionalPassInfoMixin<PassT>`` or
+``MandatoryPassInfoMixin<PassT>``. The pass should have a ``run()``
method which returns a ``PreservedAnalyses`` and takes in some unit of IR
along with an analysis manager. For example, a function pass would have a
``PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);`` method.
@@ -82,7 +83,7 @@ contain the following boilerplate:
namespace llvm {
- class HelloWorldPass : public PassInfoMixin<HelloWorldPass> {
+ class HelloWorldPass : public OptionalPassInfoMixin<HelloWorldPass> {
public:
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};
@@ -92,8 +93,12 @@ contain the following boilerplate:
#endif // LLVM_TRANSFORMS_HELLONEW_HELLOWORLD_H
This creates the class for the pass with a declaration of the ``run()``
-method which actually runs the pass. Inheriting from ``PassInfoMixin<PassT>``
-sets up some more boilerplate so that we don't have to write it ourselves.
+method which actually runs the pass. Inheriting from
+``OptionalPassInfoMixin<PassT>`` or ``MandatoryPassInfoMixin<PassT>`` sets up
+some more boilerplate so that we don't have to write it ourselves.
+``MandatoryPassInfoMixin`` should be used for passes that cannot be skipped
+(e.g. ``AlwaysInlinerPass``), while ``OptionalPassInfoMixin`` should be used
+for passes that can be skipped (e.g. optimization passes).
Our class is in the ``llvm`` namespace so that we don't pollute the global
namespace.
@@ -210,15 +215,13 @@ FAQs
Required passes
---------------
-A pass that defines a static ``isRequired()`` method that returns true is a required pass. For example:
+A pass that inherits from ``MandatoryPassInfoMixin<PassT>`` is a required pass. For example:
.. code-block:: c++
- class HelloWorldPass : public PassInfoMixin<HelloWorldPass> {
+ class HelloWorldPass : public MandatoryPassInfoMixin<HelloWorldPass> {
public:
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
-
- static bool isRequired() { return true; }
};
A required pass is a pass that may not be skipped. An example of a required
diff --git a/llvm/examples/Bye/Bye.cpp b/llvm/examples/Bye/Bye.cpp
index b476ab72a65f2..fbe3b75920679 100644
--- a/llvm/examples/Bye/Bye.cpp
+++ b/llvm/examples/Bye/Bye.cpp
@@ -30,7 +30,7 @@ struct LegacyBye : public FunctionPass {
bool runOnFunction(Function &F) override { return runBye(F); }
};
-struct Bye : PassInfoMixin<Bye> {
+struct Bye : OptionalPassInfoMixin<Bye> {
PreservedAnalyses run(Function &F, FunctionAnalysisManager &) {
if (!runBye(F))
return PreservedAnalyses::all();
diff --git a/llvm/examples/IRTransforms/SimplifyCFG.cpp b/llvm/examples/IRTransforms/SimplifyCFG.cpp
index bcdb1c64a9870..eb82ae9ad00d8 100644
--- a/llvm/examples/IRTransforms/SimplifyCFG.cpp
+++ b/llvm/examples/IRTransforms/SimplifyCFG.cpp
@@ -368,7 +368,7 @@ static bool doSimplify_v3(Function &F, DominatorTree &DT) {
}
namespace {
-struct SimplifyCFGPass : public PassInfoMixin<SimplifyCFGPass> {
+struct SimplifyCFGPass : public OptionalPassInfoMixin<SimplifyCFGPass> {
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM) {
switch (Version) {
case V1:
diff --git a/llvm/include/llvm/Analysis/AliasAnalysisEvaluator.h b/llvm/include/llvm/Analysis/AliasAnalysisEvaluator.h
index d8b02bd42e7d8..07e8d03c6c7b2 100644
--- a/llvm/include/llvm/Analysis/AliasAnalysisEvaluator.h
+++ b/llvm/include/llvm/Analysis/AliasAnalysisEvaluator.h
@@ -31,7 +31,7 @@ namespace llvm {
class AAResults;
class Function;
-class AAEvaluator : public PassInfoMixin<AAEvaluator> {
+class AAEvaluator : public OptionalPassInfoMixin<AAEvaluator> {
int64_t FunctionCount = 0;
int64_t NoAliasCount = 0, MayAliasCount = 0, PartialAliasCount = 0;
int64_t MustAliasCount = 0;
diff --git a/llvm/include/llvm/Analysis/AliasSetTracker.h b/llvm/include/llvm/Analysis/AliasSetTracker.h
index 7d461b230478b..1e3b5006c2088 100644
--- a/llvm/include/llvm/Analysis/AliasSetTracker.h
+++ b/llvm/include/llvm/Analysis/AliasSetTracker.h
@@ -270,13 +270,13 @@ inline raw_ostream& operator<<(raw_ostream &OS, const AliasSetTracker &AST) {
return OS;
}
-class AliasSetsPrinterPass : public PassInfoMixin<AliasSetsPrinterPass> {
+class AliasSetsPrinterPass
+ : public MandatoryPassInfoMixin<AliasSetsPrinterPass> {
raw_ostream &OS;
public:
LLVM_ABI explicit AliasSetsPrinterPass(raw_ostream &OS);
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
- static bool isRequired() { return true; }
};
} // end namespace llvm
diff --git a/llvm/include/llvm/Analysis/AssumptionCache.h b/llvm/include/llvm/Analysis/AssumptionCache.h
index 5656729d20366..404ed715522eb 100644
--- a/llvm/include/llvm/Analysis/AssumptionCache.h
+++ b/llvm/include/llvm/Analysis/AssumptionCache.h
@@ -189,15 +189,14 @@ class AssumptionAnalysis : public AnalysisInfoMixin<AssumptionAnalysis> {
};
/// Printer pass for the \c AssumptionAnalysis results.
-class AssumptionPrinterPass : public PassInfoMixin<AssumptionPrinterPass> {
+class AssumptionPrinterPass
+ : public MandatoryPassInfoMixin<AssumptionPrinterPass> {
raw_ostream &OS;
public:
explicit AssumptionPrinterPass(raw_ostream &OS) : OS(OS) {}
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
-
- static bool isRequired() { return true; }
};
/// An immutable pass that tracks lazily created \c AssumptionCache
diff --git a/llvm/include/llvm/Analysis/BlockFrequencyInfo.h b/llvm/include/llvm/Analysis/BlockFrequencyInfo.h
index 860ceb4e6cce6..a8a54bd0f9c5c 100644
--- a/llvm/include/llvm/Analysis/BlockFrequencyInfo.h
+++ b/llvm/include/llvm/Analysis/BlockFrequencyInfo.h
@@ -132,15 +132,13 @@ class BlockFrequencyAnalysis
/// Printer pass for the \c BlockFrequencyInfo results.
class BlockFrequencyPrinterPass
- : public PassInfoMixin<BlockFrequencyPrinterPass> {
+ : public MandatoryPassInfoMixin<BlockFrequencyPrinterPass> {
raw_ostream &OS;
public:
explicit BlockFrequencyPrinterPass(raw_ostream &OS) : OS(OS) {}
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
-
- static bool isRequired() { return true; }
};
/// Legacy analysis pass which computes \c BlockFrequencyInfo.
diff --git a/llvm/include/llvm/Analysis/BranchProbabilityInfo.h b/llvm/include/llvm/Analysis/BranchProbabilityInfo.h
index 7a8b8a3aa658a..81bcecbc4e46f 100644
--- a/llvm/include/llvm/Analysis/BranchProbabilityInfo.h
+++ b/llvm/include/llvm/Analysis/BranchProbabilityInfo.h
@@ -213,15 +213,13 @@ class BranchProbabilityAnalysis
/// Printer pass for the \c BranchProbabilityAnalysis results.
class BranchProbabilityPrinterPass
- : public PassInfoMixin<BranchProbabilityPrinterPass> {
+ : public MandatoryPassInfoMixin<BranchProbabilityPrinterPass> {
raw_ostream &OS;
public:
explicit BranchProbabilityPrinterPass(raw_ostream &OS) : OS(OS) {}
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
-
- static bool isRequired() { return true; }
};
/// Legacy analysis pass which computes \c BranchProbabilityInfo.
diff --git a/llvm/include/llvm/Analysis/CFGPrinter.h b/llvm/include/llvm/Analysis/CFGPrinter.h
index c48d2e5887919..f31754e7764ab 100644
--- a/llvm/include/llvm/Analysis/CFGPrinter.h
+++ b/llvm/include/llvm/Analysis/CFGPrinter.h
@@ -38,28 +38,24 @@ namespace llvm {
class ModuleSlotTracker;
template <class GraphType> struct GraphTraits;
-class CFGViewerPass : public PassInfoMixin<CFGViewerPass> {
+class CFGViewerPass : public MandatoryPassInfoMixin<CFGViewerPass> {
public:
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
- static bool isRequired() { return true; }
};
-class CFGOnlyViewerPass : public PassInfoMixin<CFGOnlyViewerPass> {
+class CFGOnlyViewerPass : public MandatoryPassInfoMixin<CFGOnlyViewerPass> {
public:
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
- static bool isRequired() { return true; }
};
-class CFGPrinterPass : public PassInfoMixin<CFGPrinterPass> {
+class CFGPrinterPass : public MandatoryPassInfoMixin<CFGPrinterPass> {
public:
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
- static bool isRequired() { return true; }
};
-class CFGOnlyPrinterPass : public PassInfoMixin<CFGOnlyPrinterPass> {
+class CFGOnlyPrinterPass : public MandatoryPassInfoMixin<CFGOnlyPrinterPass> {
public:
LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
- static bool isRequired() { return true; }
};
class DOTFuncInfo {
diff --git a/llvm/include/llvm/Analysis/CFGSCCPrinter.h b/llvm/include/llvm/Analysis/CFGSCCPrinter.h
index 0ea0b46c46269..09232af70c372 100644
--- a/llvm/include/llvm/Analysis/CFGSCCPrinter.h
+++ b/llvm/include/llvm/Analysis/CFGSCCPrinter.h
@@ -13,13 +13,12 @@
namespace llvm {
-class CFGSCCPrinterPass : public PassInfoMixin<CFGSCCPrinterPass> {
+class CFGSCCPrinterPass : public MandatoryPassInfoMixin<CFGSCCPrinterPass> {
raw_ostream &OS;
public:
explicit CFGSCCPrinterPass(raw_ostream &OS) : OS(OS) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
- static bool isRequired() { return true; }
};
} // namespace llvm
diff --git a/llvm/include/llvm/Analysis/CGSCCPassManager.h b/llvm/include/llvm/Analysis/CGSCCPassManager.h
index 87cfd9e6064e9..8965e992047f5 100644
--- a/llvm/include/llvm/Analysis/CGSCCPassManager.h
+++ b/llvm/include/llvm/Analysis/CGSCCPassManager.h
@@ -148,9 +148,9 @@ using CGSCCPassManager =
template <typename AnalysisT>
struct RequireAnalysisPass<AnalysisT, LazyCallGraph::SCC, CGSCCAnalysisManager,
LazyCallGraph &, CGSCCUpdateResult &>
- : PassInfoMixin<RequireAnalysisPass<AnalysisT, LazyCallGraph::SCC,
- CGSCCAnalysisManager, LazyCallGraph &,
- CGSCCUpdateResult &>> {
+ : MandatoryPassInfoMixin<RequireAnalysisPass<
+ AnalysisT, LazyCallGraph::SCC, CGSCCAnalysisManager, LazyCallGraph &,
+ CGSCCUpdateResult &>> {
PreservedAnalyses run(LazyCallGraph::SCC &C, CGSCCAnalysisManager &AM,
LazyCallGraph &CG, CGSCCUpdateResult &) {
(void)AM.template getResult<AnalysisT>(C, CG);
@@ -313,7 +313,7 @@ struct CGSCCUpdateResult {
/// pass over the module to enable a \c FunctionAnalysisManager to be used
/// within this run safely.
class ModuleToPostOrderCGSCCPassAdaptor
- : public PassInfoMixin<ModuleToPostOrderCGSCCPassAdaptor> {
+ : public MandatoryPassInfoMixin<ModuleToPostOrderCGSCCPassAdaptor> {
public:
using PassConceptT =
detail::PassConcept<LazyCallGraph::SCC, CGSCCAnalysisManager,
@@ -346,8 +346,6 @@ class ModuleToPostOrderCGSCCPassAdaptor
OS << ')';
}
- static bool isRequired() { return true; }
-
private:
std::unique_ptr<PassConceptT> Pass;
};
@@ -445,7 +443,7 @@ LLVM_ABI LazyCallGraph::SCC &updateCGAndAnalysisManagerForCGSCCPass(
/// pass over the SCC to enable a \c FunctionAnalysisManager to be used
/// within this run safely.
class CGSCCToFunctionPassAdaptor
- : public PassInfoMixin<CGSCCToFunctionPassAdaptor> {
+ : public MandatoryPassInfoMixin<CGSCCToFunctionPassAdaptor> {
public:
using PassConceptT = detail::PassConcept<Function, FunctionAnalysisManager>;
@@ -491,8 +489,6 @@ class CGSCCToFunctionPassAdaptor
OS << ')';
}
- static bool isRequired() { return true; }
-
private:
std::unique_ptr<PassConceptT> Pass;
bool EagerlyInvalidate;
@@ -544,7 +540,8 @@ class ShouldNotRunFunctionPassesAnalysis
/// This repetition has the potential to be very large however, as each one
/// might refine a single call site. As a consequence, in practice we use an
/// upper bound on the number of repetitions to limit things.
-class DevirtSCCRepeatedPass : public PassInfoMixin<DevirtSCCRepeatedPass> {
+class DevirtSCCRepeatedPass
+ : public OptionalPassInfoMixin<DevirtSCCRepeatedPass> {
public:
using PassConceptT =
detail::PassConcept<LazyCallGraph::SCC, CGSCCAnalysisManager,
diff --git a/llvm/include/llvm/Analysis/CallGraph.h b/llvm/include/llvm/Analysis/CallGraph.h
index 1dd37d47eea71..627765368b3b2 100644
--- a/llvm/include/llvm/Analysis/CallGraph.h
+++ b/llvm/include/llvm/Analysis/CallGraph.h
@@ -299,28 +299,25 @@ class CallGraphAnalysis : public AnalysisInfoMixin<CallGraphAnalysis> {
};
/// Printer pass for the \c CallGraphAnalysis results.
-class CallGraphPrinterPass : public PassInfoMixin<CallGraphPrinterPass> {
+class CallGraphPrinterPass
+ : public MandatoryPassInfoMixin<CallGraphPrinterPass> {
raw_ostream &OS;
public:
explicit CallGraphPrinterPass(raw_ostream &OS) : OS(OS) {}
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
-
- static bool isRequired() { return true; }
};
/// Printer pass for the summarized \c CallGraphAnalysis results.
class CallGraphSCCsPrinterPass
- : public PassInfoMixin<CallGraphSCCsPrinterPass> {
+ : public MandatoryPassInfoMixin<CallGraphSCCsPrinterPass> {
raw_ostream &OS;
public:
explicit CallGraphSCCsPrinterPass(raw_ostream &OS) : OS(OS) {}
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
-
- static bool isRequired() { return true; }
};
/// The \c ModulePass which wraps up a \c CallGraph and the logic to
diff --git a/llvm/include/llvm/Analysis/CallPrinter.h b/llvm/include/llvm/Analysis/CallPrinter.h
index 8f28d8af4671f..d374995e886e0 100644
--- a/llvm/include/llvm/Analysis/CallPrinter.h
+++ b/llvm/include/llvm/Analysis/CallPrinter.h
@@ -22,17 +22,16 @@ namespace llvm {
class ModulePass;
/// Pass for printing the call graph to a dot file
-class CallGraphDOTPrinterPass : public PassInfoMixin<CallGraphDOTPrinterPass> {
+class CallGraphDOTPrinterPass
+ : public MandatoryPassInfoMixin<CallGraphDOTPrinterPass> {
public:
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
- static bool isRequired() { return true; }
};
/// Pass for viewing the call graph
-class CallGraphViewerPass : public PassInfoMixin<CallGraphViewerPass> {
+class CallGraphViewerPass : public MandatoryPassInfoMixin<CallGraphViewerPass> {
public:
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
- static bool isRequired() { return true; }
};
LLVM_ABI ModulePass *createCallGraphViewerPass();
diff --git a/llvm/include/llvm/Analysis/CostModel.h b/llvm/include/llvm/Analysis/CostModel.h
index 9b127c27ba7ef..9a095bedb8d60 100644
--- a/llvm/include/llvm/Analysis/CostModel.h
+++ b/llvm/include/llvm/Analysis/CostModel.h
@@ -13,15 +13,14 @@
namespace llvm {
/// Printer pass for cost modeling results.
-class CostModelPrinterPass : public PassInfoMixin<CostModelPrinterPass> {
+class CostModelPrinterPass
+ : public MandatoryPassInfoMixin<CostModelPrinterPass> {
raw_ostream &OS;
public:
explicit CostModelPrinterPass(raw_ostream &OS) : OS(OS) {}
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
-
- static bool isRequired() { return true; }
};
} // end namespace llvm
diff --git a/llvm/include/llvm/Analysis/CtxProfAnalysis.h b/llvm/include/llvm/Analysis/CtxProfAnalysis.h
index 5c9823b0f6cc1..d116cab6448cd 100644
--- a/llvm/include/llvm/Analysis/CtxProfAnalysis.h
+++ b/llvm/include/llvm/Analysis/CtxProfAnalysis.h
@@ -147,13 +147,12 @@ class CtxProfAnalysis : public AnalysisInfoMixin<CtxProfAnalysis> {
};
class CtxProfAnalysisPrinterPass
- : public PassInfoMixin<CtxProfAnalysisPrinterPass> {
+ : public MandatoryPassInfoMixin<CtxProfAnalysisPrinterPass> {
public:
enum class PrintMode { Everything, YAML };
LLVM_ABI explicit CtxProfAnalysisPrinterPass(raw_ostream &OS);
LLVM_ABI PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
- static bool isRequired() { return true; }
private:
raw_ostream &OS;
@@ -197,7 +196,7 @@ class ProfileAnnotator {
// the pass pipeline, associate it with any Global Value, and then use it for
// PGO and ThinLTO.
// At that point, this should be moved elsewhere.
-class AssignGUIDPass : public PassInfoMixin<AssignGUIDPass> {
+class AssignGUIDPass : public OptionalPassInfoMixin<AssignGUIDPass> {
public:
explicit AssignGUIDPass() = default;
diff --git a/llvm/include/llvm/Analysis/CycleAnalysis.h b/llvm/include/llvm/Analysis/CycleAnalysis.h
index 1f2dd6d98dee0..2efc409c6360d 100644
--- a/llvm/include/llvm/Analysis/CycleAnalysis.h
+++ b/llvm/include/llvm/Analysis/CycleAnalysis.h
@@ -62,18 +62,18 @@ class CycleAnalysis : public AnalysisInfoMixin<CycleAnalysis> {
// TODO: verify analysis?
};
-class CycleInfoPrinterPass : public PassInfoMixin<CycleInfoPrinterPass> {
+class CycleInfoPrinterPass
+ : public MandatoryPassInfoMixin<CycleInfoPrinterPass> {
raw_ostream &OS;
public:
explicit CycleInfoPrinterPass(raw_ostream &OS);
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
- static bool isRequired() { return true; }
};
-struct CycleInfoVerifierPass : public PassInfoMixin<CycleInfoVerifierPass> {
+struct CycleInfoVerifierPass
+ : public MandatoryPassInfoMixin<CycleInfoVerifierPass> {
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
- static bool isRequired() { return true; }
};
} // end namespace llvm
diff --git a/llvm/include/llvm/Analysis/DDG.h b/llvm/include/llvm/Analysis/DDG.h
index 120bb46330a79..656e48e6dd9c7 100644
--- a/llvm/include/llvm/Analysis/DDG.h
+++ b/llvm/include/llvm/Analysis/DDG.h
@@ -421,13 +421,13 @@ class DDGAnalysis : public AnalysisInfoMixin<DDGAnalysis> {
};
/// Textual printer pass for the DDG of a loop.
-class DDGAnalysisPrinterPass : public PassInfoMixin<DDGAnalysisPrinterPass> {
+class DDGAnalysisPrinterPass
+ : public MandatoryPassInfoMixin<DDGAnalysisPrinterPass> {
public:
explicit DDGAnalysisPrinterPass(raw_ostream &OS) : OS(OS) {}
LLVM_ABI PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM,
LoopStandardAnalysisResults &AR,
LPMUpdater &U);
- static bool isRequired() { return true; }
private:
raw_ostream &OS;
diff --git a/llvm/include/llvm/Analysis/DDGPrinter.h b/llvm/include/llvm/Analysis/DDGPrinter.h
index 2ed73ee2b59e7..23b2a6aaaa5c7 100644
--- a/llvm/include/llvm/Analysis/DDGPrinter.h
+++ b/llvm/include/llvm/Analysis/DDGPrinter.h
@@ -25,11 +25,10 @@ class Loop;
//===--------------------------------------------------------------------===//
// Implementation of DDG DOT Printer for a loop.
//===--------------------------------------------------------------------===//
-class DDGDotPrinterPass : public PassInfoMixin<DDGDotPrinterPass> {
+class DDGDotPrinterPass : public MandatoryPassInfoMixin<DDGDotPrinterPass> {
public:
PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM,
LoopStandardAnalysisResults &AR, LPMUpdater &U);
- static bool isRequired() { return true; }
};
//===--------------------------------------------------------------------===//
diff --git a/llvm/include/llvm/Analysis/DOTGraphTraitsPass.h b/llvm/include/llvm/Analysis/DOTGraphTraitsPass.h
index 19a202f78c6ce..198c93ee07a45 100644
--- a/llvm/include/llvm/Analysis/DOTGraphTraitsPass.h
+++ b/llvm/include/llvm/Analysis/DOTGraphTraitsPass.h
@@ -44,8 +44,8 @@ template <typename AnalysisT, bool IsSimple,
typename AnalysisGraphTraitsT =
DefaultAnalysisGraphTraits<typename AnalysisT::Result &, GraphT>>
struct DOTGraphTraitsViewer
- : PassInfoMixin<DOTGraphTraitsViewer<AnalysisT, IsSimple, GraphT,
- AnalysisGraphTraitsT>> {
+ : OptionalPassInfoMixin<DOTGraphTraitsViewer<AnalysisT, IsSimple, GraphT,
+ AnalysisGraphTraitsT>>...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/192120
More information about the llvm-commits
mailing list