PrintBasicBlockPass:
  analysis: true
  arg: print-bb
  file: ./IR/IRPrintingPasses.cpp
  optional: []
  parent: BasicBlockPass
  preserves: [(all)]
  requires: []
  transitive: []
PrintFunctionPassWrapper:
  analysis: true
  arg: print-function
  file: ./IR/IRPrintingPasses.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []
PrintModulePassWrapper:
  analysis: true
  arg: print-module
  file: ./IR/IRPrintingPasses.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []

SafepointIRVerifier:
  analysis: false
  arg: verify-safepoint-ir
  file: ./IR/SafepointIRVerifier.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass]
  transitive: []

DominatorTreeWrapperPass:
  analysis: true
  arg: domtree
  file: ./IR/Dominators.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

VerifierLegacyPass:
  analysis: false
  arg: verify
  file: ./IR/Verifier.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

AtomicExpand:
  analysis: false
  arg: atomic-expand
  file: ./CodeGen/AtomicExpandPass.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LiveRangeShrink:
  analysis: false
  arg: lrshrink
  file: ./CodeGen/LiveRangeShrink.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

MachineOptimizationRemarkEmitterPass:
  analysis: true
  arg: machine-opt-remark-emitter
  file: ./CodeGen/MachineOptimizationRemarkEmitter.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [LazyMachineBlockFrequencyInfoPass]
  transitive: []

TwoAddressInstructionPass:
  analysis: false
  arg: twoaddressinstruction
  file: ./CodeGen/TwoAddressInstructionPass.cpp
  optional: [AAResultsWrapperPass, LiveVariables]
  parent: MachineFunctionPass
  preserves: [(cfg), LiveVariables, SlotIndexes, LiveIntervals]
  requires: [AAResultsWrapperPass]
  transitive: []

GlobalMerge:
  analysis: false
  arg: global-merge
  file: ./CodeGen/GlobalMerge.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

ImplicitNullChecks:
  analysis: false
  arg: implicit-null-checks
  file: ./CodeGen/ImplicitNullChecks.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [AAResultsWrapperPass]
  transitive: []

PHIElimination:
  analysis: false
  arg: phi-node-elimination
  file: ./CodeGen/PHIElimination.cpp
  optional: [LiveVariables]
  parent: MachineFunctionPass
  preserves: [LiveVariables, SlotIndexes, LiveIntervals, MachineDominatorTree, MachineLoopInfo]
  requires: [LiveVariables]
  transitive: []

LiveVariables:
  analysis: false
  arg: livevars
  file: ./CodeGen/LiveVariables.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [UnreachableMachineBlockElim]
  transitive: []

RegAllocFast:
  analysis: false
  arg: regallocfast
  file: ./CodeGen/RegAllocFast.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

ExpandISelPseudos:
  analysis: false
  arg: expand-isel-pseudos
  file: ./CodeGen/ExpandISelPseudos.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

SafeStackLegacyPass:
  analysis: false
  arg: safe-stack
  file: ./CodeGen/SafeStack.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [TargetPassConfig, TargetLibraryInfoWrapperPass, AssumptionCacheTracker]
  transitive: []

MachineOutliner:
  analysis: false
  arg: machine-outliner
  file: ./CodeGen/MachineOutliner.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: [MachineModuleInfo]
  transitive: []

CFIInstrInserter:
  analysis: false
  arg: cfi-instr-inserter
  file: ./CodeGen/CFIInstrInserter.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

PeepholeOptimizer:
  analysis: false
  arg: peephole-opt
  file: ./CodeGen/PeepholeOptimizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineLoopInfo, MachineDominatorTree, MachineDominatorTree]
  requires: [MachineLoopInfo, MachineDominatorTree]
  transitive: []

ExpandPostRA:
  analysis: false
  arg: postrapseudos
  file: ./CodeGen/ExpandPostRAPseudos.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

LiveDebugValues:
  analysis: false
  arg: livedebugvalues
  file: ./CodeGen/LiveDebugValues.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

SjLjEHPrepare:
  analysis: false
  arg: sjljehprepare
  file: ./CodeGen/SjLjEHPrepare.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: []
  transitive: []

StackMapLiveness:
  analysis: false
  arg: stackmap-liveness
  file: ./CodeGen/StackMapLivenessAnalysis.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all), (cfg)]
  requires: []
  transitive: []

MachineSinking:
  analysis: false
  arg: machine-sink
  file: ./CodeGen/MachineSink.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree, MachinePostDominatorTree, MachineLoopInfo]
  requires: [AAResultsWrapperPass, MachineBranchProbabilityInfo, MachineBlockFrequencyInfo,
    MachineDominatorTree, MachinePostDominatorTree, MachineLoopInfo]
  transitive: []
PostRAMachineSinking:
  analysis: false
  arg: postra-machine-sink
  file: ./CodeGen/MachineSink.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

MachineDominanceFrontier:
  analysis: true
  arg: machine-domfrontier
  file: ./CodeGen/MachineDominanceFrontier.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineDominatorTree]
  transitive: []

MIRCanonicalizer:
  analysis: false
  arg: mir-canonicalizer
  file: ./CodeGen/MIRCanonicalizerPass.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

MachineRegionInfoPass:
  analysis: true
  arg: machine-region-info
  file: ./CodeGen/MachineRegionInfo.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineDominanceFrontier, MachinePostDominatorTree, MachineDominatorTree]
  transitive: []

LiveIntervals:
  analysis: false
  arg: liveintervals
  file: ./CodeGen/LiveIntervals.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), AAResultsWrapperPass, LiveVariables, SlotIndexes]
  requires: [AAResultsWrapperPass, MachineDominatorTree, SlotIndexes]
  transitive: [SlotIndexes]

ProcessImplicitDefs:
  analysis: false
  arg: processimpdefs
  file: ./CodeGen/ProcessImplicitDefs.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), AAResultsWrapperPass]
  requires: []
  transitive: []

GCMachineCodeAnalysis:
  analysis: false
  arg: gc-analysis
  file: ./CodeGen/GCRootLowering.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineModuleInfo, GCModuleInfo]
  transitive: []
LowerIntrinsics:
  analysis: false
  arg: gc-lowering
  file: ./CodeGen/GCRootLowering.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass]
  requires: [GCModuleInfo]
  transitive: []

LowerEmuTLS:
  analysis: false
  arg: loweremutls
  file: ./CodeGen/LowerEmuTLS.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

RegBankSelect:
  analysis: false
  arg: regbankselect
  file: ./CodeGen/GlobalISel/RegBankSelect.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [TargetPassConfig, MachineBranchProbabilityInfo, MachineBlockFrequencyInfo]
  transitive: []

IRTranslator:
  analysis: false
  arg: irtranslator
  file: ./CodeGen/GlobalISel/IRTranslator.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [TargetPassConfig, StackProtector]
  transitive: []

Localizer:
  analysis: false
  arg: localizer
  file: ./CodeGen/GlobalISel/Localizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

InstructionSelect:
  analysis: false
  arg: instruction-select
  file: ./CodeGen/GlobalISel/InstructionSelect.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [TargetPassConfig]
  transitive: []

Legalizer:
  analysis: false
  arg: legalizer
  file: ./CodeGen/GlobalISel/Legalizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [TargetPassConfig]
  transitive: []

RegUsageInfoCollector:
  analysis: false
  arg: RegUsageInfoCollector
  file: ./CodeGen/RegUsageInfoCollector.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [PhysicalRegisterUsageInfo]
  transitive: []

ExpandMemCmpPass:
  analysis: false
  arg: expandmemcmp
  file: ./CodeGen/ExpandMemCmp.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

FEntryInserter:
  analysis: false
  arg: fentry-insert
  file: ./CodeGen/FEntryInserter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LocalStackSlotPass:
  analysis: false
  arg: localstackalloc
  file: ./CodeGen/LocalStackSlotAllocation.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

GCModuleInfo:
  analysis: false
  arg: collector-metadata
  file: ./CodeGen/GCMetadata.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

EdgeBundles:
  analysis: true
  arg: edge-bundles
  file: ./CodeGen/EdgeBundles.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

MachineBlockFrequencyInfo:
  analysis: true
  arg: machine-block-freq
  file: ./CodeGen/MachineBlockFrequencyInfo.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineLoopInfo, MachineBranchProbabilityInfo]
  transitive: []

LiveStacks:
  analysis: false
  arg: livestacks
  file: ./CodeGen/LiveStacks.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all), SlotIndexes]
  requires: [SlotIndexes]
  transitive: [SlotIndexes]

PEI:
  analysis: false
  arg: prologepilog
  file: ./CodeGen/PrologEpilogInserter.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineLoopInfo, MachineDominatorTree]
  requires: [MachineOptimizationRemarkEmitterPass, MachineLoopInfo, MachineDominatorTree]
  transitive: []

EarlyMachineLICM:
  analysis: false
  arg: early-machinelicm
  file: ./CodeGen/MachineLICM.cpp
  optional: []
  preserves: []
  requires: [MachineLoopInfo, AAResultsWrapperPass, MachineDominatorTree]
  transitive: []
MachineLICM:
  analysis: false
  arg: machinelicm
  file: ./CodeGen/MachineLICM.cpp
  optional: []
  preserves: []
  requires: [MachineLoopInfo, AAResultsWrapperPass, MachineDominatorTree]
  transitive: []

RAGreedy:
  analysis: false
  arg: greedy
  file: ./CodeGen/RegAllocGreedy.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineBlockFrequencyInfo, AAResultsWrapperPass, LiveIntervals,
    SlotIndexes, LiveDebugVariables, LiveStacks, MachineDominatorTree, MachineLoopInfo,
    VirtRegMap, LiveRegMatrix]
  requires: [LiveDebugVariables, AAResultsWrapperPass, MachineBlockFrequencyInfo,
    MachineOptimizationRemarkEmitterPass, LiveIntervals, MachineDominatorTree, VirtRegMap,
    SpillPlacement, EdgeBundles, RegisterCoalescer, LiveRegMatrix, MachineLoopInfo,
    SlotIndexes, LiveStacks, MachineScheduler]
  transitive: []

TargetPassConfig:
  analysis: false
  arg: targetpassconfig
  file: ./CodeGen/TargetPassConfig.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

DwarfEHPrepare:
  analysis: false
  arg: dwarfehprepare
  file: ./CodeGen/DwarfEHPrepare.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [DominatorTreeWrapperPass, TargetPassConfig, TargetTransformInfoWrapperPass]
  transitive: []

BranchFolderPass:
  analysis: false
  arg: branch-folder
  file: ./CodeGen/BranchFolding.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [TargetPassConfig, MachineBranchProbabilityInfo, MachineBlockFrequencyInfo]
  transitive: []

MIRPrintingPass:
  analysis: false
  arg: mir-printer
  file: ./CodeGen/MIRPrintingPass.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

XRayInstrumentation:
  analysis: false
  arg: xray-instrumentation
  file: ./CodeGen/XRayInstrumentation.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineLoopInfo, MachineDominatorTree]
  requires: [MachineLoopInfo]
  transitive: []

ScavengerTest:
  analysis: false
  arg: scavenger-test
  file: ./CodeGen/RegisterScavenging.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

DetectDeadLanes:
  analysis: false
  arg: detect-dead-lanes
  file: ./CodeGen/DetectDeadLanes.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

ExpandReductions:
  analysis: false
  arg: expand-reductions
  file: ./CodeGen/ExpandReductions.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [TargetTransformInfoWrapperPass]
  transitive: []

MachineLoopInfo:
  analysis: true
  arg: machine-loops
  file: ./CodeGen/MachineLoopInfo.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineDominatorTree]
  transitive: []

PhysicalRegisterUsageInfo:
  analysis: true
  arg: reg-usage-info
  file: ./CodeGen/RegisterUsageInfo.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LiveRegMatrix:
  analysis: false
  arg: liveregmatrix
  file: ./CodeGen/LiveRegMatrix.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [VirtRegMap, LiveIntervals]
  transitive: [LiveIntervals, VirtRegMap]

MachineVerifierPass:
  analysis: false
  arg: machineverifier
  file: ./CodeGen/MachineVerifier.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

MachineCSE:
  analysis: false
  arg: machine-cse
  file: ./CodeGen/MachineCSE.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree]
  requires: [AAResultsWrapperPass, MachineDominatorTree]
  transitive: []

StackProtector:
  analysis: true
  arg: stack-protector
  file: ./CodeGen/StackProtector.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass]
  requires: [TargetPassConfig]
  transitive: []

RenameIndependentSubregs:
  analysis: false
  arg: rename-independent-subregs
  file: ./CodeGen/RenameIndependentSubregs.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), LiveIntervals, SlotIndexes]
  requires: [SlotIndexes, LiveIntervals]
  transitive: []

WinEHPrepare:
  analysis: false
  arg: winehprepare
  file: ./CodeGen/WinEHPrepare.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: []
  transitive: []

StackSlotColoring:
  analysis: false
  arg: stack-slot-coloring
  file: ./CodeGen/StackSlotColoring.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), SlotIndexes, MachineBlockFrequencyInfo]
  requires: [MachineLoopInfo, SlotIndexes, LiveStacks, MachineBlockFrequencyInfo]
  transitive: []

MachineCopyPropagation:
  analysis: false
  arg: machine-cp
  file: ./CodeGen/MachineCopyPropagation.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

ScalarizeMaskedMemIntrin:
  analysis: false
  arg: scalarize-masked-mem-intrin
  file: ./CodeGen/ScalarizeMaskedMemIntrin.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [TargetTransformInfoWrapperPass]
  transitive: []

IndirectBrExpandPass:
  analysis: false
  arg: indirectbr-expand
  file: ./CodeGen/IndirectBrExpandPass.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

PostRAScheduler:
  analysis: false
  arg: post-RA-sched
  file: ./CodeGen/PostRASchedulerList.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree, MachineLoopInfo]
  requires: [MachineLoopInfo, AAResultsWrapperPass, TargetPassConfig, MachineDominatorTree]
  transitive: []

RegUsageInfoPropagation:
  analysis: false
  arg: reg-usage-propagation
  file: ./CodeGen/RegUsageInfoPropagate.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [PhysicalRegisterUsageInfo]
  transitive: []

StackColoring:
  analysis: false
  arg: stack-coloring
  file: ./CodeGen/StackColoring.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [SlotIndexes]
  transitive: []

MachineDominatorTree:
  analysis: true
  arg: machinedomtree
  file: ./CodeGen/MachineDominators.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

ShadowStackGCLowering:
  analysis: false
  arg: shadow-stack-gc-lowering
  file: ./CodeGen/ShadowStackGCLowering.cpp
  optional: []
  preserves: []
  requires: [GCModuleInfo]
  transitive: []

EarlyIfConverter:
  analysis: false
  arg: early-ifcvt
  file: ./CodeGen/EarlyIfConversion.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree, MachineLoopInfo, MachineTraceMetrics]
  requires: [MachineLoopInfo, MachineBranchProbabilityInfo, MachineDominatorTree,
    MachineTraceMetrics]
  transitive: []

RegisterCoalescer:
  analysis: false
  arg: simple-register-coalescing
  file: ./CodeGen/RegisterCoalescer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), LiveIntervals, SlotIndexes, MachineLoopInfo]
  requires: [MachineLoopInfo, AAResultsWrapperPass, LiveIntervals, SlotIndexes]
  transitive: []

MachineBranchProbabilityInfo:
  analysis: true
  arg: machine-branch-prob
  file: ./CodeGen/MachineBranchProbabilityInfo.cpp
  optional: []
  parent: ImmutablePass
  preserves: [(all)]
  requires: []
  transitive: []

SpillPlacement:
  analysis: true
  arg: spill-code-placement
  file: ./CodeGen/SpillPlacement.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [EdgeBundles, MachineLoopInfo, MachineBlockFrequencyInfo]
  transitive: [EdgeBundles, MachineLoopInfo]

EarlyTailDuplicate:
  analysis: false
  arg: early-tailduplication
  file: ./CodeGen/TailDuplication.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
TailDuplicate:
  analysis: false
  arg: tailduplication
  file: ./CodeGen/TailDuplication.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

MachineBlockPlacement:
  analysis: false
  arg: block-placement
  file: ./CodeGen/MachineBlockPlacement.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineBranchProbabilityInfo, MachineBlockFrequencyInfo, MachinePostDominatorTree,
    TargetPassConfig, MachineLoopInfo]
  transitive: []
MachineBlockPlacementStats:
  analysis: false
  arg: block-placement-stats
  file: ./CodeGen/MachineBlockPlacement.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineBranchProbabilityInfo, MachineBlockFrequencyInfo]
  transitive: []

MachineTraceMetrics:
  analysis: true
  arg: machine-trace-metrics
  file: ./CodeGen/MachineTraceMetrics.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineLoopInfo, MachineBranchProbabilityInfo]
  transitive: []

WasmEHPrepare:
  analysis: false
  arg: wasmehprepare
  file: ./CodeGen/WasmEHPrepare.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

BranchRelaxation:
  analysis: false
  arg: branch-relaxation
  file: ./CodeGen/BranchRelaxation.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

ReachingDefAnalysis:
  analysis: true
  arg: reaching-deps-analysis
  file: ./CodeGen/ReachingDefAnalysis.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

FinalizeMachineBundles:
  analysis: false
  arg: finalize-mi-bundles
  file: ./CodeGen/MachineInstrBundle.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
UnpackMachineBundles:
  analysis: false
  arg: unpack-mi-bundles
  file: ./CodeGen/MachineInstrBundle.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

DeadMachineInstructionElim:
  analysis: false
  arg: dead-mi-elimination
  file: ./CodeGen/DeadMachineInstructionElim.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

FuncletLayout:
  analysis: false
  arg: funclet-layout
  file: ./CodeGen/FuncletLayout.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

UnreachableBlockElimLegacyPass:
  analysis: false
  arg: unreachableblockelim
  file: ./CodeGen/UnreachableBlockElim.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass]
  requires: []
  transitive: []
UnreachableMachineBlockElim:
  analysis: false
  arg: unreachable-mbb-elimination
  file: ./CodeGen/UnreachableBlockElim.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineLoopInfo, MachineDominatorTree]
  requires: []
  transitive: []

MachinePostDominatorTree:
  analysis: true
  arg: machinepostdomtree
  file: ./CodeGen/MachinePostDominators.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

RABasic:
  analysis: false
  arg: regallocbasic
  file: ./CodeGen/RegAllocBasic.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), AAResultsWrapperPass, LiveIntervals, SlotIndexes, LiveDebugVariables,
    LiveStacks, MachineBlockFrequencyInfo, MachineLoopInfo, VirtRegMap, LiveRegMatrix]
  requires: [AAResultsWrapperPass, LiveDebugVariables, MachineBlockFrequencyInfo,
    LiveIntervals, MachineDominatorTree, VirtRegMap, RegisterCoalescer, LiveRegMatrix,
    MachineLoopInfo, SlotIndexes, LiveStacks, MachineScheduler]
  transitive: []

ShrinkWrap:
  analysis: false
  arg: shrink-wrap
  file: ./CodeGen/ShrinkWrap.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineBlockFrequencyInfo, MachineOptimizationRemarkEmitterPass, MachineDominatorTree,
    MachinePostDominatorTree, MachineLoopInfo]
  transitive: []

MachinePipeliner:
  analysis: false
  arg: pipeliner
  file: ./CodeGen/MachinePipeliner.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [AAResultsWrapperPass]
  requires: [MachineLoopInfo, AAResultsWrapperPass, LiveIntervals, MachineDominatorTree]
  transitive: []

PreISelIntrinsicLoweringLegacyPass:
  analysis: false
  arg: pre-isel-intrinsic-lowering
  file: ./CodeGen/PreISelIntrinsicLowering.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

ResetMachineFunction:
  analysis: false
  arg: reset-machine-function
  file: ./CodeGen/ResetMachineFunctionPass.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [StackProtector]
  requires: []
  transitive: []

MachineModuleInfo:
  analysis: false
  arg: machinemoduleinfo
  file: ./CodeGen/MachineModuleInfo.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

CodeGenPrepare:
  analysis: false
  arg: codegenprepare
  file: ./CodeGen/CodeGenPrepare.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [ProfileSummaryInfoWrapperPass, LoopInfoWrapperPass, TargetLibraryInfoWrapperPass,
    TargetTransformInfoWrapperPass]
  transitive: []

MachineCombiner:
  analysis: false
  arg: machine-combiner
  file: ./CodeGen/MachineCombiner.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree, MachineLoopInfo, MachineTraceMetrics]
  requires: [MachineLoopInfo, MachineTraceMetrics]
  transitive: []

VirtRegMap:
  analysis: false
  arg: virtregmap
  file: ./CodeGen/VirtRegMap.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []
VirtRegRewriter:
  analysis: false
  arg: virtregrewriter
  file: ./CodeGen/VirtRegMap.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), SlotIndexes, LiveStacks]
  requires: [LiveDebugVariables, LiveIntervals, VirtRegMap, SlotIndexes, LiveStacks]
  transitive: []

MachineFunctionPrinterPass:
  analysis: false
  arg: machineinstr-printer
  file: ./CodeGen/MachineFunctionPrinterPass.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

OptimizePHIs:
  analysis: false
  arg: opt-phis
  file: ./CodeGen/OptimizePHIs.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

BreakFalseDeps:
  analysis: false
  arg: break-false-deps
  file: ./CodeGen/BreakFalseDeps.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [ReachingDefAnalysis]
  transitive: []

SlotIndexes:
  analysis: false
  arg: slotindexes
  file: ./CodeGen/SlotIndexes.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

PatchableFunction:
  analysis: false
  arg: patchable-function
  file: ./CodeGen/PatchableFunction.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LazyMachineBlockFrequencyInfoPass:
  analysis: true
  arg: lazy-machine-block-freq
  file: ./CodeGen/LazyMachineBlockFrequencyInfo.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineLoopInfo, MachineBranchProbabilityInfo]
  transitive: []

LiveDebugVariables:
  analysis: false
  arg: livedebugvars
  file: ./CodeGen/LiveDebugVariables.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [LiveIntervals, MachineDominatorTree]
  transitive: [LiveIntervals]

InterleavedAccess:
  analysis: false
  arg: interleaved-access
  file: ./CodeGen/InterleavedAccessPass.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass]
  requires: [DominatorTreeWrapperPass]
  transitive: []

MachineScheduler:
  analysis: false
  arg: machine-scheduler
  file: ./CodeGen/MachineScheduler.cpp
  optional: []
  parent: MachineSchedulerBase
  preserves: [(cfg), SlotIndexes, LiveIntervals]
  requires: [AAResultsWrapperPass, LiveIntervals, TargetPassConfig, MachineLoopInfo,
    SlotIndexes]
  transitive: []
PostMachineScheduler:
  analysis: false
  arg: postmisched
  file: ./CodeGen/MachineScheduler.cpp
  optional: []
  parent: MachineSchedulerBase
  preserves: [(cfg)]
  requires: [MachineLoopInfo, TargetPassConfig]
  transitive: []

PostRAHazardRecognizer:
  analysis: false
  arg: post-RA-hazard-rec
  file: ./CodeGen/PostRAHazardRecognizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

IfConverter:
  analysis: false
  arg: if-converter
  file: ./CodeGen/IfConversion.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineBranchProbabilityInfo, MachineBlockFrequencyInfo]
  transitive: []

WriteBitcodePass:
  analysis: true
  arg: write-bitcode
  file: ./Bitcode/Writer/BitcodeWriterPass.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: [ModuleSummaryIndexWrapperPass]
  transitive: []

ARMCodeGenPrepare:
  analysis: false
  arg: arm-codegenprepare
  file: ./Target/ARM/ARMCodeGenPrepare.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [TargetPassConfig]
  transitive: []

ARMExecutionDomainFix:
  analysis: false
  arg: arm-execution-domain-fix
  file: ./Target/ARM/ARMTargetMachine.cpp
  optional: []
  preserves: []
  requires: [ReachingDefAnalysis]
  transitive: []

ARMConstantIslands:
  analysis: false
  arg: arm-cp-islands
  file: ./Target/ARM/ARMConstantIslandPass.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

Thumb2SizeReduce:
  analysis: false
  arg: t2-reduce-size
  file: ./Target/ARM/Thumb2SizeReduction.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

ARMParallelDSP:
  analysis: false
  arg: arm-parallel-dsp
  file: ./Target/ARM/ARMParallelDSP.cpp
  optional: []
  parent: LoopPass
  preserves: [LoopInfoWrapperPass, (cfg)]
  requires: [AAResultsWrapperPass, ScalarEvolutionWrapperPass, TargetLibraryInfoWrapperPass,
    TargetPassConfig, AssumptionCacheTracker, LoopInfoWrapperPass, DominatorTreeWrapperPass]
  transitive: []

ARMExpandPseudo:
  analysis: false
  arg: arm-pseudo
  file: ./Target/ARM/ARMExpandPseudoInsts.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

ARMLoadStoreOpt:
  analysis: false
  arg: arm-ldst-opt
  file: ./Target/ARM/ARMLoadStoreOptimizer.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
ARMPreAllocLoadStoreOpt:
  analysis: false
  arg: arm-prera-ldst-opt
  file: ./Target/ARM/ARMLoadStoreOptimizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [AAResultsWrapperPass]
  transitive: []

PPCBoolRetToInt:
  analysis: false
  arg: bool-ret-to-int
  file: ./Target/PowerPC/PPCBoolRetToInt.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass]
  requires: []
  transitive: []

PPCMIPeephole:
  analysis: false
  arg: ppc-mi-peepholes
  file: ./Target/PowerPC/PPCMIPeephole.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree]
  requires: [MachineDominatorTree]
  transitive: []

PPCLoopPreIncPrep:
  analysis: false
  arg: ppc-loop-preinc-prep
  file: ./Target/PowerPC/PPCLoopPreIncPrep.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, LoopInfoWrapperPass]
  requires: [LoopInfoWrapperPass, ScalarEvolutionWrapperPass]
  transitive: []

PPCExpandISEL:
  analysis: false
  arg: ppc-expand-isel
  file: ./Target/PowerPC/PPCExpandISEL.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

PPCPreEmitPeephole:
  analysis: false
  arg: ppc-pre-emit-peephole
  file: ./Target/PowerPC/PPCPreEmitPeephole.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

PPCBranchCoalescing:
  analysis: false
  arg: ppc-branch-coalescing
  file: ./Target/PowerPC/PPCBranchCoalescing.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachinePostDominatorTree, MachineDominatorTree]
  transitive: []

PPCTOCRegDeps:
  analysis: false
  arg: ppc-toc-reg-deps
  file: ./Target/PowerPC/PPCTOCRegDeps.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

PPCCTRLoops:
  analysis: false
  arg: ppc-ctr-loops
  file: ./Target/PowerPC/PPCCTRLoops.cpp
  optional: []
  parent: FunctionPass
  preserves: [LoopInfoWrapperPass, DominatorTreeWrapperPass]
  requires: [ScalarEvolutionWrapperPass, AssumptionCacheTracker, LoopInfoWrapperPass,
    DominatorTreeWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []
PPCCTRLoopsVerify:
  analysis: false
  arg: ppc-ctr-loops-verify
  file: ./Target/PowerPC/PPCCTRLoops.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineDominatorTree]
  transitive: []

PPCBSel:
  analysis: false
  arg: ppc-branch-select
  file: ./Target/PowerPC/PPCBranchSelector.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

PPCReduceCRLogicals:
  analysis: false
  arg: ppc-reduce-cr-ops
  file: ./Target/PowerPC/PPCReduceCRLogicals.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineBranchProbabilityInfo, MachineDominatorTree]
  transitive: []

PPCVSXSwapRemoval:
  analysis: false
  arg: ppc-vsx-swaps
  file: ./Target/PowerPC/PPCVSXSwapRemoval.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

PPCVSXFMAMutate:
  analysis: false
  arg: ppc-vsx-fma-mutate
  file: ./Target/PowerPC/PPCVSXFMAMutate.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [LiveIntervals, SlotIndexes, MachineDominatorTree]
  requires: [SlotIndexes, LiveIntervals, MachineDominatorTree]
  transitive: []

PPCVSXCopy:
  analysis: false
  arg: ppc-vsx-copy
  file: ./Target/PowerPC/PPCVSXCopy.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

PPCTLSDynamicCall:
  analysis: false
  arg: ppc-tls-dynamic-call
  file: ./Target/PowerPC/PPCTLSDynamicCall.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [LiveIntervals, SlotIndexes]
  requires: [SlotIndexes, LiveIntervals]
  transitive: []

PPCQPXLoadSplat:
  analysis: false
  arg: ppc-qpx-load-splat
  file: ./Target/PowerPC/PPCQPXLoadSplat.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

PPCEarlyReturn:
  analysis: false
  arg: ppc-early-ret
  file: ./Target/PowerPC/PPCEarlyReturn.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

BPFMIPeephole:
  analysis: false
  arg: bpf-mi-zext-elim
  file: ./Target/BPF/BPFMIPeephole.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
BPFMIPreEmitPeephole:
  analysis: false
  arg: bpf-mi-pemit-peephole
  file: ./Target/BPF/BPFMIPeephole.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

SIPeepholeSDWA:
  analysis: false
  arg: si-peephole-sdwa
  file: ./Target/AMDGPU/SIPeepholeSDWA.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AMDGPUAnnotateUniformValues:
  analysis: false
  arg: amdgpu-annotate-uniform
  file: ./Target/AMDGPU/AMDGPUAnnotateUniformValues.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DivergenceAnalysis, LoopInfoWrapperPass, MemoryDependenceWrapperPass]
  transitive: []

AMDGPUPerfHintAnalysis:
  analysis: true
  arg: amdgpu-perf-hint
  file: ./Target/AMDGPU/AMDGPUPerfHintAnalysis.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

AMDGPUUnifyMetadata:
  analysis: false
  arg: amdgpu-unify-metadata
  file: ./Target/AMDGPU/AMDGPUUnifyMetadata.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

AMDGPUMachineCFGStructurizer:
  analysis: false
  arg: amdgpu-machine-cfg-structurizer
  file: ./Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineRegionInfoPass]
  transitive: []

AMDGPURewriteOutArguments:
  analysis: false
  arg: amdgpu-rewrite-out-arguments
  file: ./Target/AMDGPU/AMDGPURewriteOutArguments.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [MemoryDependenceWrapperPass]
  transitive: []

SIOptimizeExecMaskingPreRA:
  analysis: false
  arg: si-optimize-exec-masking-pre-ra
  file: ./Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [LiveIntervals]
  transitive: []

AMDGPUAlwaysInline:
  analysis: false
  arg: amdgpu-always-inline
  file: ./Target/AMDGPU/AMDGPUAlwaysInlinePass.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []

SIMemoryLegalizer:
  analysis: false
  arg: si-memory-legalizer
  file: ./Target/AMDGPU/SIMemoryLegalizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

SIWholeQuadMode:
  analysis: false
  arg: si-wqm
  file: ./Target/AMDGPU/SIWholeQuadMode.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: [LiveIntervals]
  transitive: []

AMDGPUAAWrapperPass:
  analysis: true
  arg: amdgpu-aa
  file: ./Target/AMDGPU/AMDGPUAliasAnalysis.cpp
  optional: []
  parent: ImmutablePass
  preserves: [(all)]
  requires: []
  transitive: []

SIInsertSkips:
  analysis: false
  arg: si-insert-skips
  file: ./Target/AMDGPU/SIInsertSkips.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

R600ClauseMergePass:
  analysis: false
  arg: r600mergeclause
  file: ./Target/AMDGPU/R600ClauseMergePass.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

SILowerI1Copies:
  analysis: false
  arg: si-i1-copies
  file: ./Target/AMDGPU/SILowerI1Copies.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AMDGPUCodeGenPrepare:
  analysis: false
  arg: amdgpu-codegenprepare
  file: ./Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DivergenceAnalysis, AssumptionCacheTracker]
  transitive: []

SILowerControlFlow:
  analysis: false
  arg: si-lower-control-flow
  file: ./Target/AMDGPU/SILowerControlFlow.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [SlotIndexes, LiveIntervals, (cfg)]
  requires: []
  transitive: []

SIFormMemoryClauses:
  analysis: false
  arg: si-form-memory-clauses
  file: ./Target/AMDGPU/SIFormMemoryClauses.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [LiveIntervals]
  transitive: []

SIFixWWMLiveness:
  analysis: false
  arg: si-fix-wwm-liveness
  file: ./Target/AMDGPU/SIFixWWMLiveness.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [SlotIndexes, LiveIntervals, (cfg)]
  requires: []
  transitive: []

AMDGPULowerKernelAttributes:
  analysis: false
  arg: amdgpu-lower-kernel-attributes
  file: ./Target/AMDGPU/AMDGPULowerKernelAttributes.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []

SIAnnotateControlFlow:
  analysis: false
  arg: si-annotate-control-flow
  file: ./Target/AMDGPU/SIAnnotateControlFlow.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass]
  requires: [DivergenceAnalysis, LoopInfoWrapperPass, DominatorTreeWrapperPass]
  transitive: []

R600ControlFlowFinalizer:
  analysis: false
  arg: r600cf
  file: ./Target/AMDGPU/R600ControlFlowFinalizer.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

SIDebuggerInsertNops:
  analysis: false
  arg: si-debugger-insert-nops
  file: ./Target/AMDGPU/SIDebuggerInsertNops.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

SIInsertWaitcnts:
  analysis: false
  arg: si-insert-waitcnts
  file: ./Target/AMDGPU/SIInsertWaitcnts.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: [MachineLoopInfo]
  transitive: []

SIShrinkInstructions:
  analysis: false
  arg: si-shrink-instructions
  file: ./Target/AMDGPU/SIShrinkInstructions.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AMDGPULowerKernelArguments:
  analysis: false
  arg: amdgpu-lower-kernel-arguments
  file: ./Target/AMDGPU/AMDGPULowerKernelArguments.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [TargetPassConfig]
  transitive: []

SIFoldOperands:
  analysis: false
  arg: si-fold-operands
  file: ./Target/AMDGPU/SIFoldOperands.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AMDGPUDAGToDAGISel:
  analysis: false
  arg: isel
  file: ./Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
  optional: []
  parent: SelectionDAGISel
  preserves: []
  requires: [AMDGPUArgumentUsageInfo, DivergenceAnalysis, AMDGPUPerfHintAnalysis]
  transitive: []

R600ExpandSpecialInstrsPass:
  analysis: false
  arg: r600-expand-special-instrs
  file: ./Target/AMDGPU/R600ExpandSpecialInstrs.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

SIFixSGPRCopies:
  analysis: false
  arg: si-fix-sgpr-copies
  file: ./Target/AMDGPU/SIFixSGPRCopies.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree, (cfg)]
  requires: [MachineDominatorTree]
  transitive: []

AMDGPUPromoteAlloca:
  analysis: false
  arg: amdgpu-promote-alloca
  file: ./Target/AMDGPU/AMDGPUPromoteAlloca.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AMDGPUCFGStructurizer:
  analysis: false
  arg: amdgpustructurizer
  file: ./Target/AMDGPU/AMDILCFGStructurizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineLoopInfo, MachinePostDominatorTree, MachineDominatorTree]
  transitive: []

SIFixVGPRCopies:
  analysis: false
  arg: si-fix-vgpr-copies
  file: ./Target/AMDGPU/SIFixVGPRCopies.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

AMDGPUOpenCLEnqueuedBlockLowering:
  analysis: false
  arg: amdgpu-lower-enqueued-block
  file: ./Target/AMDGPU/AMDGPUOpenCLEnqueuedBlockLowering.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

SIOptimizeExecMasking:
  analysis: false
  arg: si-optimize-exec-masking
  file: ./Target/AMDGPU/SIOptimizeExecMasking.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: [LiveIntervals]
  transitive: []

AMDGPUInliner:
  analysis: false
  arg: amdgpu-inline
  file: ./Target/AMDGPU/AMDGPUInline.cpp
  optional: []
  parent: LegacyInlinerBase
  preserves: []
  requires: [CallGraphWrapperPass, TargetLibraryInfoWrapperPass, ProfileSummaryInfoWrapperPass,
    AssumptionCacheTracker, TargetTransformInfoWrapperPass]
  transitive: []

R600EmitClauseMarkers:
  analysis: false
  arg: emitclausemarkers
  file: ./Target/AMDGPU/R600EmitClauseMarkers.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

R600VectorRegMerger:
  analysis: false
  arg: vec-merger
  file: ./Target/AMDGPU/R600OptimizeVectorRegisters.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree, MachineLoopInfo]
  requires: [MachineLoopInfo, MachineDominatorTree]
  transitive: []

SILoadStoreOptimizer:
  analysis: false
  arg: si-load-store-opt
  file: ./Target/AMDGPU/SILoadStoreOptimizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: [AAResultsWrapperPass]
  transitive: []

AMDGPUAnnotateKernelFeatures:
  analysis: false
  arg: amdgpu-annotate-kernel-features
  file: ./Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp
  optional: []
  parent: CallGraphSCCPass
  preserves: [(all)]
  requires: []
  transitive: []

AMDGPUSimplifyLibCalls:
  analysis: false
  arg: amdgpu-simplifylib
  file: ./Target/AMDGPU/AMDGPULibCalls.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [AAResultsWrapperPass]
  transitive: []
AMDGPUUseNativeCalls:
  analysis: false
  arg: amdgpu-usenative
  file: ./Target/AMDGPU/AMDGPULibCalls.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

R600Packetizer:
  analysis: false
  arg: packets
  file: ./Target/AMDGPU/R600Packetizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree, MachineLoopInfo]
  requires: [MachineLoopInfo, MachineDominatorTree]
  transitive: []

AMDGPUArgumentUsageInfo:
  analysis: true
  arg: amdgpu-argument-reg-usage-info
  file: ./Target/AMDGPU/AMDGPUArgumentUsageInfo.cpp
  optional: []
  parent: ImmutablePass
  preserves: [(all)]
  requires: []
  transitive: []

AMDGPUUnifyDivergentExitNodes:
  analysis: false
  arg: amdgpu-unify-divergent-exit-nodes
  file: ./Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp
  optional: []
  parent: FunctionPass
  preserves: [DivergenceAnalysis]
  requires: [TargetTransformInfoWrapperPass, DivergenceAnalysis, PostDominatorTreeWrapperPass]
  transitive: []

AMDGPULowerIntrinsics:
  analysis: false
  arg: amdgpu-lower-intrinsics
  file: ./Target/AMDGPU/AMDGPULowerIntrinsics.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [TargetTransformInfoWrapperPass]
  transitive: []

ShadowCallStack:
  analysis: false
  arg: shadow-call-stack
  file: ./Target/X86/ShadowCallStack.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

WinEHStatePass:
  analysis: false
  arg: x86-winehstate
  file: ./Target/X86/X86WinEHState.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

X86ExecutionDomainFix:
  analysis: false
  arg: x86-execution-domain-fix
  file: ./Target/X86/X86TargetMachine.cpp
  optional: []
  preserves: []
  requires: [ReachingDefAnalysis]
  transitive: []

X86CallFrameOptimization:
  analysis: false
  arg: x86-cf-opt
  file: ./Target/X86/X86CallFrameOptimization.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

FixupLEAPass:
  analysis: false
  arg: x86-fixup-LEAs
  file: ./Target/X86/X86FixupLEAs.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

X86FlagsCopyLoweringPass:
  analysis: false
  arg: x86-flags-copy-lowering
  file: ./Target/X86/X86FlagsCopyLowering.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineDominatorTree]
  transitive: []

X86SpeculativeLoadHardeningPass:
  analysis: false
  arg: x86-speculative-load-hardening
  file: ./Target/X86/X86SpeculativeLoadHardening.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

X86AvoidSFBPass:
  analysis: false
  arg: x86-avoid-SFB
  file: ./Target/X86/X86AvoidStoreForwardingBlocks.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [AAResultsWrapperPass]
  transitive: []

X86DomainReassignment:
  analysis: false
  arg: x86-domain-reassignment
  file: ./Target/X86/X86DomainReassignment.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

FixupBWInstPass:
  analysis: false
  arg: x86-fixup-bw-insts
  file: ./Target/X86/X86FixupBWInsts.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineLoopInfo]
  transitive: []

EvexToVexInstPass:
  analysis: false
  arg: x86-evex-to-vex-compress
  file: ./Target/X86/X86EvexToVex.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

X86CmovConverterPass:
  analysis: false
  arg: x86-cmov-conversion
  file: ./Target/X86/X86CmovConversion.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineLoopInfo]
  transitive: []

SystemZTDCPass:
  analysis: false
  arg: systemz-tdc
  file: ./Target/SystemZ/SystemZTDC.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

SystemZExpandPseudo:
  analysis: false
  arg: systemz-expand-pseudo
  file: ./Target/SystemZ/SystemZExpandPseudo.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

AVRRelaxMem:
  analysis: false
  arg: avr-relax-mem
  file: ./Target/AVR/AVRRelaxMemOperations.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

AVRExpandPseudo:
  analysis: false
  arg: avr-expand-pseudo
  file: ./Target/AVR/AVRExpandPseudoInsts.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

AArch64PromoteConstant:
  analysis: false
  arg: aarch64-promote-const
  file: ./Target/AArch64/AArch64PromoteConstant.cpp
  optional: []
  parent: ModulePass
  preserves: [(cfg), DominatorTreeWrapperPass]
  requires: [DominatorTreeWrapperPass]
  transitive: []

AArch64ExpandPseudo:
  analysis: false
  arg: aarch64-expand-pseudo
  file: ./Target/AArch64/AArch64ExpandPseudoInsts.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

AArch64A53Fix835769:
  analysis: false
  arg: aarch64-fix-cortex-a53-835769-pass
  file: ./Target/AArch64/AArch64A53Fix835769.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AArch64RedundantCopyElimination:
  analysis: false
  arg: aarch64-copyelim
  file: ./Target/AArch64/AArch64RedundantCopyElimination.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

AArch64SIMDInstrOpt:
  analysis: false
  arg: aarch64-simdinstr-opt
  file: ./Target/AArch64/AArch64SIMDInstrOpt.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

AArch64ConditionalCompares:
  analysis: false
  arg: aarch64-ccmp
  file: ./Target/AArch64/AArch64ConditionalCompares.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree, MachineLoopInfo, MachineTraceMetrics]
  requires: [MachineLoopInfo, MachineBranchProbabilityInfo, MachineDominatorTree,
    MachineTraceMetrics]
  transitive: []

AArch64LoadStoreOpt:
  analysis: false
  arg: aarch64-ldst-opt
  file: ./Target/AArch64/AArch64LoadStoreOptimizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [AAResultsWrapperPass]
  transitive: []

LDTLSCleanup:
  analysis: false
  arg: aarch64-local-dynamic-tls-cleanup
  file: ./Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: [MachineDominatorTree]
  transitive: []

AArch64StorePairSuppress:
  analysis: false
  arg: aarch64-stp-suppress
  file: ./Target/AArch64/AArch64StorePairSuppress.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineTraceMetrics]
  requires: [MachineTraceMetrics]
  transitive: []

AArch64DeadRegisterDefinitions:
  analysis: false
  arg: aarch64-dead-defs
  file: ./Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AArch64CollectLOH:
  analysis: false
  arg: aarch64-collect-loh
  file: ./Target/AArch64/AArch64CollectLOH.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

AArch64CondBrTuning:
  analysis: false
  arg: aarch64-cond-br-tuning
  file: ./Target/AArch64/AArch64CondBrTuning.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AArch64A57FPLoadBalancing:
  analysis: false
  arg: aarch64-a57-fp-load-balancing
  file: ./Target/AArch64/AArch64A57FPLoadBalancing.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AArch64AdvSIMDScalar:
  analysis: false
  arg: aarch64-simd-scalar
  file: ./Target/AArch64/AArch64AdvSIMDScalarPass.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

AArch64ConditionOptimizer:
  analysis: false
  arg: aarch64-condopt
  file: ./Target/AArch64/AArch64ConditionOptimizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree]
  requires: [MachineDominatorTree]
  transitive: []

FalkorHWPFFix:
  analysis: false
  arg: falkor-hwpf-fix-late
  file: ./Target/AArch64/AArch64FalkorHWPFFix.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: [MachineLoopInfo]
  transitive: []
FalkorMarkStridedAccessesLegacy:
  analysis: false
  arg: falkor-hwpf-fix
  file: ./Target/AArch64/AArch64FalkorHWPFFix.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, LoopInfoWrapperPass, ScalarEvolutionWrapperPass]
  requires: [ScalarEvolutionWrapperPass, LoopInfoWrapperPass, TargetPassConfig]
  transitive: []

LanaiMemAluCombiner:
  analysis: false
  arg: lanai-mem-alu-combiner
  file: ./Target/Lanai/LanaiMemAluCombiner.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

ARCBranchFinalize:
  analysis: false
  arg: arc-branch-finalize
  file: ./Target/ARC/ARCBranchFinalize.cpp
  optional: []
  preserves: []
  requires: [MachineDominatorTree]
  transitive: []

XCoreLowerThreadLocal:
  analysis: false
  arg: xcore-lower-thread-local
  file: ./Target/XCore/XCoreLowerThreadLocal.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

WebAssemblyPrepareForLiveIntervals:
  analysis: false
  arg: wasm-prepare-for-live-intervals
  file: ./Target/WebAssembly/WebAssemblyPrepareForLiveIntervals.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

WebAssemblyCFGStackify:
  analysis: false
  arg: wasm-cfg-stackify
  file: ./Target/WebAssembly/WebAssemblyCFGStackify.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree, MachineLoopInfo]
  requires: [MachineLoopInfo, MachineDominatorTree]
  transitive: []

LowerGlobalDtors:
  analysis: false
  arg: wasm-lower-global-dtors
  file: ./Target/WebAssembly/WebAssemblyLowerGlobalDtors.cpp
  optional: []
  parent: ModulePass
  preserves: [(cfg)]
  requires: []
  transitive: []

WebAssemblyCallIndirectFixup:
  analysis: false
  arg: wasm-call-indirect-fixup
  file: ./Target/WebAssembly/WebAssemblyCallIndirectFixup.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

WebAssemblyCFGSort:
  analysis: false
  arg: wasm-cfg-sort
  file: ./Target/WebAssembly/WebAssemblyCFGSort.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree, MachineLoopInfo]
  requires: [MachineLoopInfo, MachineDominatorTree]
  transitive: []

WebAssemblyStoreResults:
  analysis: false
  arg: wasm-store-results
  file: ./Target/WebAssembly/WebAssemblyStoreResults.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineBlockFrequencyInfo, MachineDominatorTree, SlotIndexes,
    LiveIntervals]
  requires: [TargetLibraryInfoWrapperPass, MachineBlockFrequencyInfo, LiveIntervals,
    MachineDominatorTree]
  transitive: []

WebAssemblyLateEHPrepare:
  analysis: false
  arg: wasm-exception-prepare
  file: ./Target/WebAssembly/WebAssemblyLateEHPrepare.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

WebAssemblySetP2AlignOperands:
  analysis: false
  arg: wasm-set-p2align-operands
  file: ./Target/WebAssembly/WebAssemblySetP2AlignOperands.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineBlockFrequencyInfo]
  requires: []
  transitive: []

WebAssemblyRegStackify:
  analysis: false
  arg: wasm-reg-stackify
  file: ./Target/WebAssembly/WebAssemblyRegStackify.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineBlockFrequencyInfo, SlotIndexes, LiveIntervals, MachineDominatorTree]
  requires: [AAResultsWrapperPass, LiveIntervals, MachineDominatorTree]
  transitive: []

WebAssemblyRegNumbering:
  analysis: false
  arg: wasm-reg-numbering
  file: ./Target/WebAssembly/WebAssemblyRegNumbering.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

WebAssemblyLowerEmscriptenEHSjLj:
  analysis: false
  arg: wasm-lower-em-ehsjlj
  file: ./Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [DominatorTreeWrapperPass]
  transitive: []

WebAssemblyLowerBrUnless:
  analysis: false
  arg: wasm-lower-br_unless
  file: ./Target/WebAssembly/WebAssemblyLowerBrUnless.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

WebAssemblyOptimizeLiveIntervals:
  analysis: false
  arg: wasm-optimize-live-intervals
  file: ./Target/WebAssembly/WebAssemblyOptimizeLiveIntervals.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineBlockFrequencyInfo, SlotIndexes, LiveIntervals]
  requires: [LiveIntervals]
  transitive: []

WebAssemblyArgumentMove:
  analysis: false
  arg: wasm-argument-move
  file: ./Target/WebAssembly/WebAssemblyArgumentMove.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineBlockFrequencyInfo]
  requires: []
  transitive: []

WebAssemblyExceptionInfo:
  analysis: true
  arg: wasm-exception-info
  file: ./Target/WebAssembly/WebAssemblyExceptionInfo.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineDominanceFrontier, MachineDominatorTree]
  transitive: []

WebAssemblyPeephole:
  analysis: false
  arg: wasm-peephole
  file: ./Target/WebAssembly/WebAssemblyPeephole.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

WebAssemblyAddMissingPrototypes:
  analysis: false
  arg: wasm-add-missing-prototypes
  file: ./Target/WebAssembly/WebAssemblyAddMissingPrototypes.cpp
  optional: []
  parent: ModulePass
  preserves: [(cfg)]
  requires: []
  transitive: []

FixFunctionBitcasts:
  analysis: false
  arg: wasm-fix-function-bitcasts
  file: ./Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
  optional: []
  parent: ModulePass
  preserves: [(cfg)]
  requires: []
  transitive: []

OptimizeReturned:
  analysis: false
  arg: wasm-optimize-returned
  file: ./Target/WebAssembly/WebAssemblyOptimizeReturned.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), DominatorTreeWrapperPass]
  requires: [DominatorTreeWrapperPass]
  transitive: []

WebAssemblyRegColoring:
  analysis: false
  arg: wasm-reg-coloring
  file: ./Target/WebAssembly/WebAssemblyRegColoring.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineBlockFrequencyInfo]
  requires: [MachineBlockFrequencyInfo, LiveIntervals]
  transitive: []

WebAssemblyFixIrreducibleControlFlow:
  analysis: false
  arg: wasm-fix-irreducible-control-flow
  file: ./Target/WebAssembly/WebAssemblyFixIrreducibleControlFlow.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree, MachineLoopInfo]
  requires: [MachineLoopInfo, MachineDominatorTree]
  transitive: []

WebAssemblyReplacePhysRegs:
  analysis: false
  arg: wasm-replace-phys-regs
  file: ./Target/WebAssembly/WebAssemblyReplacePhysRegs.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

WebAssemblyExplicitLocals:
  analysis: false
  arg: wasm-explicit-locals
  file: ./Target/WebAssembly/WebAssemblyExplicitLocals.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineBlockFrequencyInfo]
  requires: []
  transitive: []

HexagonGenMux:
  analysis: false
  arg: hexagon-gen-mux
  file: ./Target/Hexagon/HexagonGenMux.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

HexagonGenInsert:
  analysis: false
  arg: hexinsert
  file: ./Target/Hexagon/HexagonGenInsert.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree]
  requires: [MachineDominatorTree]
  transitive: []

HexagonCopyToCombine:
  analysis: false
  arg: hexagon-copy-combine
  file: ./Target/Hexagon/HexagonCopyToCombine.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

HexagonOptAddrMode:
  analysis: false
  arg: amode-opt
  file: ./Target/Hexagon/HexagonOptAddrMode.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineDominanceFrontier, MachineDominatorTree]
  transitive: []

HexagonGenPredicate:
  analysis: false
  arg: hexagon-gen-pred
  file: ./Target/Hexagon/HexagonGenPredicate.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree]
  requires: [MachineDominatorTree]
  transitive: []

HexagonVExtract:
  analysis: false
  arg: hexagon-vextract
  file: ./Target/Hexagon/HexagonVExtract.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

HexagonCallFrameInformation:
  analysis: false
  arg: hexagon-cfi
  file: ./Target/Hexagon/HexagonFrameLowering.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

HexagonVectorPrint:
  analysis: false
  arg: hexagon-vector-print
  file: ./Target/Hexagon/HexagonVectorPrint.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

HexagonVectorLoopCarriedReuse:
  analysis: false
  arg: hexagon-vlcr
  file: ./Target/Hexagon/HexagonVectorLoopCarriedReuse.cpp
  optional: []
  parent: LoopPass
  preserves: [(cfg)]
  requires: [LoopInfoWrapperPass, LoopSimplify, LCSSAWrapperPass]
  transitive: []

HexagonHardwareLoops:
  analysis: false
  arg: hwloops
  file: ./Target/Hexagon/HexagonHardwareLoops.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineLoopInfo, MachineDominatorTree]
  transitive: []

HexagonPacketizer:
  analysis: false
  arg: hexagon-packetizer
  file: ./Target/Hexagon/HexagonVLIWPacketizer.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg), MachineDominatorTree, MachineLoopInfo]
  requires: [MachineLoopInfo, AAResultsWrapperPass, MachineBranchProbabilityInfo,
    MachineDominatorTree]
  transitive: []

HexagonGatherPacketize:
  analysis: false
  arg: hexagon-gather-packetize
  file: ./Target/Hexagon/HexagonGatherPacketize.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

HexagonSplitConst32AndConst64:
  analysis: false
  arg: split-const-for-sdata
  file: ./Target/Hexagon/HexagonSplitConst32AndConst64.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

HexagonConstExtenders:
  analysis: false
  arg: hexagon-cext-opt
  file: ./Target/Hexagon/HexagonConstExtenders.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree]
  requires: [MachineDominatorTree]
  transitive: []

HexagonConstPropagation:
  analysis: false
  arg: hexagon-constp
  file: ./Target/Hexagon/HexagonConstPropagation.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

HexagonStoreWidening:
  analysis: false
  arg: hexagon-widen-stores
  file: ./Target/Hexagon/HexagonStoreWidening.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [AAResultsWrapperPass]
  requires: [AAResultsWrapperPass]
  transitive: []

HexagonLoopIdiomRecognize:
  analysis: false
  arg: hexagon-loop-idiom
  file: ./Target/Hexagon/HexagonLoopIdiomRecognition.cpp
  optional: []
  parent: LoopPass
  preserves: [AAResultsWrapperPass, TargetLibraryInfoWrapperPass]
  requires: [AAResultsWrapperPass, ScalarEvolutionWrapperPass, TargetLibraryInfoWrapperPass,
    LoopSimplify, LoopInfoWrapperPass, DominatorTreeWrapperPass, LCSSAWrapperPass]
  transitive: []

HexagonPeephole:
  analysis: false
  arg: hexagon-peephole
  file: ./Target/Hexagon/HexagonPeephole.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

HexagonCFGOptimizer:
  analysis: false
  arg: hexagon-cfg
  file: ./Target/Hexagon/HexagonCFGOptimizer.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

HexagonFixupHwLoops:
  analysis: false
  arg: hwloopsfixup
  file: ./Target/Hexagon/HexagonFixupHwLoops.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

HexagonRDFOpt:
  analysis: false
  arg: hexagon-rdf-opt
  file: ./Target/Hexagon/HexagonRDFOpt.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(all)]
  requires: [MachineDominanceFrontier, MachineDominatorTree]
  transitive: []

HexagonBranchRelaxation:
  analysis: false
  arg: hexagon-brelax
  file: ./Target/Hexagon/HexagonBranchRelaxation.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

HexagonNewValueJump:
  analysis: false
  arg: hexagon-nvj
  file: ./Target/Hexagon/HexagonNewValueJump.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineBranchProbabilityInfo]
  transitive: []

HexagonExpandCondsets:
  analysis: false
  arg: expand-condsets
  file: ./Target/Hexagon/HexagonExpandCondsets.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [LiveIntervals, SlotIndexes, MachineDominatorTree]
  requires: [SlotIndexes, LiveIntervals, MachineDominatorTree]
  transitive: []

HexagonEarlyIfConversion:
  analysis: false
  arg: hexagon-early-if
  file: ./Target/Hexagon/HexagonEarlyIfConv.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree]
  requires: [MachineLoopInfo, MachineBranchProbabilityInfo, MachineDominatorTree]
  transitive: []

HexagonCommonGEP:
  analysis: false
  arg: hcommgep
  file: ./Target/Hexagon/HexagonCommonGEP.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, PostDominatorTreeWrapperPass, LoopInfoWrapperPass]
  requires: [DominatorTreeWrapperPass, PostDominatorTreeWrapperPass, LoopInfoWrapperPass]
  transitive: []

HexagonGenExtract:
  analysis: false
  arg: hextract
  file: ./Target/Hexagon/HexagonGenExtract.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass]
  requires: [DominatorTreeWrapperPass]
  transitive: []

HexagonBitSimplify:
  analysis: false
  arg: hexagon-bit-simplify
  file: ./Target/Hexagon/HexagonBitSimplify.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineDominatorTree]
  requires: [MachineDominatorTree]
  transitive: []
HexagonLoopRescheduling:
  analysis: false
  arg: hexagon-loop-resched
  file: ./Target/Hexagon/HexagonBitSimplify.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

HexagonSplitDoubleRegs:
  analysis: false
  arg: hexagon-split-double
  file: ./Target/Hexagon/HexagonSplitDouble.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: [MachineLoopInfo]
  requires: [MachineLoopInfo]
  transitive: []

HexagonOptimizeSZextends:
  analysis: false
  arg: reargs
  file: ./Target/Hexagon/HexagonOptimizeSZextends.cpp
  optional: []
  parent: FunctionPass
  preserves: [StackProtector]
  requires: []
  transitive: []

MicroMipsSizeReduce:
  analysis: false
  arg: micromips-reduce-size
  file: ./Target/Mips/MicroMipsSizeReduction.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

MipsBranchExpansion:
  analysis: false
  arg: mips-branch-expansion
  file: ./Target/Mips/MipsBranchExpansion.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

MipsDelaySlotFiller:
  analysis: false
  arg: mips-delay-slot-filler
  file: ./Target/Mips/MipsDelaySlotFiller.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: [MachineBranchProbabilityInfo]
  transitive: []

NVPTXLowerArgs:
  analysis: false
  arg: nvptx-lower-args
  file: ./Target/NVPTX/NVPTXLowerArgs.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

NVPTXLowerAggrCopies:
  analysis: false
  arg: nvptx-lower-aggr-copies
  file: ./Target/NVPTX/NVPTXLowerAggrCopies.cpp
  optional: []
  parent: FunctionPass
  preserves: [StackProtector]
  requires: [TargetTransformInfoWrapperPass]
  transitive: []

NVPTXLowerAlloca:
  analysis: false
  arg: nvptx-lower-alloca
  file: ./Target/NVPTX/NVPTXLowerAlloca.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

NVPTXAssignValidGlobalNames:
  analysis: false
  arg: nvptx-assign-valid-global-names
  file: ./Target/NVPTX/NVPTXAssignValidGlobalNames.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

NVVMReflect:
  analysis: false
  arg: nvvm-reflect
  file: ./Target/NVPTX/NVVMReflect.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

GenericToNVVM:
  analysis: false
  arg: generic-to-nvvm
  file: ./Target/NVPTX/NVPTXGenericToNVVM.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: []
  transitive: []

NVPTXAllocaHoisting:
  analysis: false
  arg: alloca-hoisting
  file: ./Target/NVPTX/NVPTXAllocaHoisting.cpp
  optional: []
  parent: FunctionPass
  preserves: [StackProtector]
  requires: []
  transitive: []

NVPTXPeephole:
  analysis: false
  arg: nvptx-peephole
  file: ./Target/NVPTX/NVPTXPeephole.cpp
  optional: []
  parent: MachineFunctionPass
  preserves: []
  requires: []
  transitive: []

NVVMIntrRange:
  analysis: false
  arg: nvvm-intr-range
  file: ./Target/NVPTX/NVVMIntrRange.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

RISCVMergeBaseOffsetOpt:
  analysis: false
  arg: riscv-merge-base-offset
  file: ./Target/RISCV/RISCVMergeBaseOffset.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

InstructionCombiningPass:
  analysis: false
  arg: instcombine
  file: ./Transforms/InstCombine/InstructionCombining.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), DominatorTreeWrapperPass, AAResultsWrapperPass, BasicAAWrapperPass,
    GlobalsAAWrapperPass]
  requires: [AAResultsWrapperPass, TargetLibraryInfoWrapperPass, OptimizationRemarkEmitterWrapperPass,
    GlobalsAAWrapperPass, AssumptionCacheTracker, DominatorTreeWrapperPass]
  transitive: []

SLPVectorizer:
  analysis: false
  arg: slp-vectorizer
  file: ./Transforms/Vectorize/SLPVectorizer.cpp
  optional: []
  parent: FunctionPass
  preserves: [LoopInfoWrapperPass, DominatorTreeWrapperPass, AAResultsWrapperPass,
    GlobalsAAWrapperPass, (cfg)]
  requires: [AAResultsWrapperPass, ScalarEvolutionWrapperPass, LoopSimplify, OptimizationRemarkEmitterWrapperPass,
    DemandedBitsWrapperPass, AssumptionCacheTracker, LoopInfoWrapperPass, DominatorTreeWrapperPass,
    TargetTransformInfoWrapperPass]
  transitive: []

LoopVectorize:
  analysis: false
  arg: loop-vectorize
  file: ./Transforms/Vectorize/LoopVectorize.cpp
  optional: []
  parent: FunctionPass
  preserves: [LoopInfoWrapperPass, DominatorTreeWrapperPass, BasicAAWrapperPass, GlobalsAAWrapperPass]
  requires: [AAResultsWrapperPass, ScalarEvolutionWrapperPass, LoopAccessLegacyAnalysis,
    OptimizationRemarkEmitterWrapperPass, GlobalsAAWrapperPass, LoopInfoWrapperPass,
    DemandedBitsWrapperPass, BasicAAWrapperPass, BlockFrequencyInfoWrapperPass, AssumptionCacheTracker,
    DominatorTreeWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

LoadStoreVectorizer:
  analysis: false
  arg: load-store-vectorizer
  file: ./Transforms/Vectorize/LoadStoreVectorizer.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [AAResultsWrapperPass, ScalarEvolutionWrapperPass, SCEVAAWrapperPass,
    GlobalsAAWrapperPass, DominatorTreeWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

ForceFunctionAttrsLegacyPass:
  analysis: false
  arg: forceattrs
  file: ./Transforms/IPO/ForceFunctionAttrs.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

WriteThinLTOBitcode:
  analysis: true
  arg: write-thinlto-bitcode
  file: ./Transforms/IPO/ThinLTOBitcodeWriter.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: [TargetLibraryInfoWrapperPass, AssumptionCacheTracker, ModuleSummaryIndexWrapperPass]
  transitive: []

GlobalSplit:
  analysis: false
  arg: globalsplit
  file: ./Transforms/IPO/GlobalSplit.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

PostOrderFunctionAttrsLegacyPass:
  analysis: false
  arg: functionattrs
  file: ./Transforms/IPO/FunctionAttrs.cpp
  optional: []
  parent: CallGraphSCCPass
  preserves: [(cfg)]
  requires: [CallGraphWrapperPass, AssumptionCacheTracker]
  transitive: []
ReversePostOrderFunctionAttrsLegacyPass:
  analysis: false
  arg: rpo-functionattrs
  file: ./Transforms/IPO/FunctionAttrs.cpp
  optional: []
  parent: ModulePass
  preserves: [(cfg), CallGraphWrapperPass]
  requires: [CallGraphWrapperPass]
  transitive: []

IPSCCPLegacyPass:
  analysis: false
  arg: ipsccp
  file: ./Transforms/IPO/SCCP.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

BlockExtractor:
  analysis: false
  arg: extract-blocks
  file: ./Transforms/IPO/BlockExtractor.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

FunctionImportLegacyPass:
  analysis: false
  arg: function-import
  file: ./Transforms/IPO/FunctionImport.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

SimpleInliner:
  analysis: false
  arg: inline
  file: ./Transforms/IPO/InlineSimple.cpp
  optional: []
  parent: LegacyInlinerBase
  preserves: []
  requires: [CallGraphWrapperPass, TargetLibraryInfoWrapperPass, ProfileSummaryInfoWrapperPass,
    AssumptionCacheTracker, TargetTransformInfoWrapperPass]
  transitive: []

SampleProfileLoaderLegacyPass:
  analysis: false
  arg: sample-profile
  file: ./Transforms/IPO/SampleProfile.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [TargetTransformInfoWrapperPass, ProfileSummaryInfoWrapperPass, AssumptionCacheTracker]
  transitive: []

AlwaysInlinerLegacyPass:
  analysis: false
  arg: always-inline
  file: ./Transforms/IPO/AlwaysInliner.cpp
  optional: []
  preserves: []
  requires: [CallGraphWrapperPass, ProfileSummaryInfoWrapperPass, TargetLibraryInfoWrapperPass,
    AssumptionCacheTracker]
  transitive: []

GlobalDCELegacyPass:
  analysis: false
  arg: globaldce
  file: ./Transforms/IPO/GlobalDCE.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

GlobalOptLegacyPass:
  analysis: false
  arg: globalopt
  file: ./Transforms/IPO/GlobalOpt.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [DominatorTreeWrapperPass, BlockFrequencyInfoWrapperPass, TargetLibraryInfoWrapperPass,
    TargetTransformInfoWrapperPass]
  transitive: []

CalledValuePropagationLegacyPass:
  analysis: false
  arg: called-value-propagation
  file: ./Transforms/IPO/CalledValuePropagation.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []

LowerTypeTests:
  analysis: false
  arg: lowertypetests
  file: ./Transforms/IPO/LowerTypeTests.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

StripDeadPrototypesLegacyPass:
  analysis: false
  arg: strip-dead-prototypes
  file: ./Transforms/IPO/StripDeadPrototypes.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

StripDeadDebugInfo:
  analysis: false
  arg: strip-dead-debug-info
  file: ./Transforms/IPO/StripSymbols.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []
StripDebugDeclare:
  analysis: false
  arg: strip-debug-declare
  file: ./Transforms/IPO/StripSymbols.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []
StripNonDebugSymbols:
  analysis: false
  arg: strip-nondebug
  file: ./Transforms/IPO/StripSymbols.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []
StripSymbols:
  analysis: false
  arg: strip
  file: ./Transforms/IPO/StripSymbols.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []

CrossDSOCFI:
  analysis: false
  arg: cross-dso-cfi
  file: ./Transforms/IPO/CrossDSOCFI.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

IPCP:
  analysis: false
  arg: ipconstprop
  file: ./Transforms/IPO/IPConstantPropagation.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

DAE:
  analysis: false
  arg: deadargelim
  file: ./Transforms/IPO/DeadArgumentElimination.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
DAH:
  analysis: false
  arg: deadarghaX0r
  file: ./Transforms/IPO/DeadArgumentElimination.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

InternalizeLegacyPass:
  analysis: false
  arg: internalize
  file: ./Transforms/IPO/Internalize.cpp
  optional: []
  parent: ModulePass
  preserves: [(cfg), CallGraphWrapperPass]
  requires: []
  transitive: []

PruneEH:
  analysis: false
  arg: prune-eh
  file: ./Transforms/IPO/PruneEH.cpp
  optional: []
  preserves: []
  requires: [CallGraphWrapperPass]
  transitive: []

EliminateAvailableExternallyLegacyPass:
  analysis: false
  arg: elim-avail-extern
  file: ./Transforms/IPO/ElimAvailExtern.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

PartialInlinerLegacyPass:
  analysis: false
  arg: partial-inliner
  file: ./Transforms/IPO/PartialInlining.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [ProfileSummaryInfoWrapperPass, TargetTransformInfoWrapperPass, AssumptionCacheTracker]
  transitive: []

MergeFunctions:
  analysis: false
  arg: mergefunc
  file: ./Transforms/IPO/MergeFunctions.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LoopExtractor:
  analysis: false
  arg: loop-extract
  file: ./Transforms/IPO/LoopExtractor.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [DominatorTreeWrapperPass, LoopSimplify, BreakCriticalEdges, LoopInfoWrapperPass]
  transitive: []
SingleLoopExtractor:
  analysis: false
  arg: loop-extract-single
  file: ./Transforms/IPO/LoopExtractor.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

BarrierNoop:
  analysis: false
  arg: barrier
  file: ./Transforms/IPO/BarrierNoopPass.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

ArgPromotion:
  analysis: false
  arg: argpromotion
  file: ./Transforms/IPO/ArgumentPromotion.cpp
  optional: []
  preserves: []
  requires: [CallGraphWrapperPass, TargetLibraryInfoWrapperPass, AssumptionCacheTracker]
  transitive: []

ConstantMergeLegacyPass:
  analysis: false
  arg: constmerge
  file: ./Transforms/IPO/ConstantMerge.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

InferFunctionAttrsLegacyPass:
  analysis: false
  arg: inferattrs
  file: ./Transforms/IPO/InferFunctionAttrs.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

WholeProgramDevirt:
  analysis: false
  arg: wholeprogramdevirt
  file: ./Transforms/IPO/WholeProgramDevirt.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass, AssumptionCacheTracker]
  transitive: []

AggressiveInstCombinerLegacyPass:
  analysis: false
  arg: aggressive-instcombine
  file: ./Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), AAResultsWrapperPass, BasicAAWrapperPass, DominatorTreeWrapperPass,
    GlobalsAAWrapperPass]
  requires: [DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass]
  transitive: []

LoopDeletionLegacyPass:
  analysis: false
  arg: loop-deletion
  file: ./Transforms/Scalar/LoopDeletion.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [LoopPass]
  transitive: []

LoopUnroll:
  analysis: false
  arg: loop-unroll
  file: ./Transforms/Scalar/LoopUnrollPass.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [TargetTransformInfoWrapperPass, AssumptionCacheTracker, LoopPass]
  transitive: []

StraightLineStrengthReduce:
  analysis: false
  arg: slsr
  file: ./Transforms/Scalar/StraightLineStrengthReduce.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [DominatorTreeWrapperPass, ScalarEvolutionWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

LowerExpectIntrinsic:
  analysis: false
  arg: lower-expect
  file: ./Transforms/Scalar/LowerExpectIntrinsic.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

JumpThreading:
  analysis: false
  arg: jump-threading
  file: ./Transforms/Scalar/JumpThreading.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, LazyValueInfoWrapperPass, GlobalsAAWrapperPass]
  requires: [AAResultsWrapperPass, DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass,
    LazyValueInfoWrapperPass]
  transitive: []

InstSimplifyLegacyPass:
  analysis: false
  arg: instsimplify
  file: ./Transforms/Scalar/InstSimplifyPass.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass, AssumptionCacheTracker,
    OptimizationRemarkEmitterWrapperPass]
  transitive: []

SeparateConstOffsetFromGEP:
  analysis: false
  arg: separate-const-offset-from-gep
  file: ./Transforms/Scalar/SeparateConstOffsetFromGEP.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [ScalarEvolutionWrapperPass, TargetLibraryInfoWrapperPass, LoopInfoWrapperPass,
    DominatorTreeWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

GVNSinkLegacyPass:
  analysis: false
  arg: gvn-sink
  file: ./Transforms/Scalar/GVNSink.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass]
  requires: [DominatorTreeWrapperPass, PostDominatorTreeWrapperPass]
  transitive: []

FlattenCFGPass:
  analysis: false
  arg: flattencfg
  file: ./Transforms/Scalar/FlattenCFGPass.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [AAResultsWrapperPass]
  transitive: []

LegacyLoopSinkPass:
  analysis: false
  arg: loop-sink
  file: ./Transforms/Scalar/LoopSink.cpp
  optional: []
  parent: LoopPass
  preserves: [(cfg)]
  requires: [BlockFrequencyInfoWrapperPass, LoopPass]
  transitive: []

LoopSimplifyCFGLegacyPass:
  analysis: false
  arg: loop-simplifycfg
  file: ./Transforms/Scalar/LoopSimplifyCFG.cpp
  optional: []
  parent: LoopPass
  preserves: [DependenceAnalysisWrapperPass]
  requires: [LoopPass]
  transitive: []

LoopReroll:
  analysis: false
  arg: loop-reroll
  file: ./Transforms/Scalar/LoopRerollPass.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass, LoopPass]
  transitive: []

LoopDistributeLegacy:
  analysis: false
  arg: loop-distribute
  file: ./Transforms/Scalar/LoopDistribute.cpp
  optional: []
  parent: FunctionPass
  preserves: [LoopInfoWrapperPass, DominatorTreeWrapperPass, GlobalsAAWrapperPass]
  requires: [ScalarEvolutionWrapperPass, LoopAccessLegacyAnalysis, OptimizationRemarkEmitterWrapperPass,
    LoopInfoWrapperPass, DominatorTreeWrapperPass]
  transitive: []

SpeculativeExecutionLegacyPass:
  analysis: false
  arg: speculative-execution
  file: ./Transforms/Scalar/SpeculativeExecution.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass, (cfg)]
  requires: [TargetTransformInfoWrapperPass]
  transitive: []

SROALegacyPass:
  analysis: false
  arg: sroa
  file: ./Transforms/Scalar/SROA.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass, (cfg)]
  requires: [DominatorTreeWrapperPass, AssumptionCacheTracker]
  transitive: []

PartiallyInlineLibCallsLegacyPass:
  analysis: false
  arg: partially-inline-libcalls
  file: ./Transforms/Scalar/PartiallyInlineLibCalls.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

NewGVNLegacyPass:
  analysis: false
  arg: newgvn
  file: ./Transforms/Scalar/NewGVN.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, GlobalsAAWrapperPass]
  requires: [AAResultsWrapperPass, TargetLibraryInfoWrapperPass, MemorySSAWrapperPass,
    GlobalsAAWrapperPass, AssumptionCacheTracker, DominatorTreeWrapperPass]
  transitive: []

LoopInstSimplifyLegacyPass:
  analysis: false
  arg: loop-instsimplify
  file: ./Transforms/Scalar/LoopInstSimplify.cpp
  optional: []
  parent: LoopPass
  preserves: [(cfg)]
  requires: [DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass, AssumptionCacheTracker,
    LoopPass]
  transitive: []

LoopIdiomRecognizeLegacyPass:
  analysis: false
  arg: loop-idiom
  file: ./Transforms/Scalar/LoopIdiomRecognize.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass, TargetTransformInfoWrapperPass, LoopPass]
  transitive: []

StructurizeCFG:
  analysis: false
  arg: structurizecfg
  file: ./Transforms/Scalar/StructurizeCFG.cpp
  optional: []
  parent: RegionPass
  preserves: [DominatorTreeWrapperPass]
  requires: [LowerSwitch, DivergenceAnalysis, LoopInfoWrapperPass, RegionInfoPass,
    DominatorTreeWrapperPass]
  transitive: []

ConstantHoistingLegacyPass:
  analysis: false
  arg: consthoist
  file: ./Transforms/Scalar/ConstantHoisting.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [DominatorTreeWrapperPass, BlockFrequencyInfoWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

BDCELegacyPass:
  analysis: false
  arg: bdce
  file: ./Transforms/Scalar/BDCE.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), GlobalsAAWrapperPass]
  requires: [DemandedBitsWrapperPass]
  transitive: []

SCCPLegacyPass:
  analysis: false
  arg: sccp
  file: ./Transforms/Scalar/SCCP.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass, (cfg)]
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

Float2IntLegacyPass:
  analysis: false
  arg: float2int
  file: ./Transforms/Scalar/Float2Int.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), GlobalsAAWrapperPass]
  requires: []
  transitive: []

LegacyLICMPass:
  analysis: false
  arg: licm
  file: ./Transforms/Scalar/LICM.cpp
  optional: []
  parent: LoopPass
  preserves: [DominatorTreeWrapperPass, LoopInfoWrapperPass]
  requires: [MemorySSAWrapperPass, TargetLibraryInfoWrapperPass, TargetTransformInfoWrapperPass,
    LoopPass]
  transitive: []

DSELegacyPass:
  analysis: false
  arg: dse
  file: ./Transforms/Scalar/DeadStoreElimination.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), DominatorTreeWrapperPass, GlobalsAAWrapperPass, MemoryDependenceWrapperPass]
  requires: [AAResultsWrapperPass, TargetLibraryInfoWrapperPass, GlobalsAAWrapperPass,
    DominatorTreeWrapperPass, MemoryDependenceWrapperPass]
  transitive: []

TailCallElim:
  analysis: false
  arg: tailcallelim
  file: ./Transforms/Scalar/TailRecursionElimination.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass]
  requires: [AAResultsWrapperPass, TargetTransformInfoWrapperPass, OptimizationRemarkEmitterWrapperPass]
  transitive: []

Scalarizer:
  analysis: false
  arg: scalarizer
  file: ./Transforms/Scalar/Scalarizer.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LoopStrengthReduce:
  analysis: false
  arg: loop-reduce
  file: ./Transforms/Scalar/LoopStrengthReduce.cpp
  optional: []
  parent: LoopPass
  preserves: [LoopInfoWrapperPass, DominatorTreeWrapperPass, ScalarEvolutionWrapperPass,
    IVUsersWrapperPass]
  requires: [ScalarEvolutionWrapperPass, LoopSimplify, IVUsersWrapperPass, LoopInfoWrapperPass,
    DominatorTreeWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

SinkingLegacyPass:
  analysis: false
  arg: sink
  file: ./Transforms/Scalar/Sink.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), DominatorTreeWrapperPass, LoopInfoWrapperPass]
  requires: [AAResultsWrapperPass, DominatorTreeWrapperPass, LoopInfoWrapperPass]
  transitive: []

GuardWideningLegacyPass:
  analysis: false
  arg: guard-widening
  file: ./Transforms/Scalar/GuardWidening.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [DominatorTreeWrapperPass, PostDominatorTreeWrapperPass, LoopInfoWrapperPass]
  transitive: []
LoopGuardWideningLegacyPass:
  analysis: false
  arg: loop-guard-widening
  file: ./Transforms/Scalar/GuardWidening.cpp
  optional: []
  parent: LoopPass
  preserves: [(cfg), PostDominatorTreeWrapperPass]
  requires: [DominatorTreeWrapperPass, PostDominatorTreeWrapperPass, LoopInfoWrapperPass]
  transitive: []

ADCELegacyPass:
  analysis: false
  arg: adce
  file: ./Transforms/Scalar/ADCE.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), DominatorTreeWrapperPass, PostDominatorTreeWrapperPass, GlobalsAAWrapperPass,
    DominatorTreeWrapperPass, PostDominatorTreeWrapperPass]
  requires: [DominatorTreeWrapperPass, PostDominatorTreeWrapperPass]
  transitive: []

LowerGuardIntrinsicLegacyPass:
  analysis: false
  arg: lower-guard-intrinsic
  file: ./Transforms/Scalar/LowerGuardIntrinsic.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LoopUnswitch:
  analysis: false
  arg: loop-unswitch
  file: ./Transforms/Scalar/LoopUnswitch.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [TargetTransformInfoWrapperPass, DivergenceAnalysis, AssumptionCacheTracker,
    LoopPass]
  transitive: []

ConstantPropagation:
  analysis: false
  arg: constprop
  file: ./Transforms/Scalar/ConstantProp.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

LoopLoadElimination:
  analysis: false
  arg: loop-load-elim
  file: ./Transforms/Scalar/LoopLoadElimination.cpp
  optional: []
  parent: FunctionPass
  preserves: [LoopInfoWrapperPass, DominatorTreeWrapperPass, GlobalsAAWrapperPass]
  requires: [ScalarEvolutionWrapperPass, LoopSimplify, LoopAccessLegacyAnalysis, LoopInfoWrapperPass,
    DominatorTreeWrapperPass]
  transitive: []

CFGSimplifyPass:
  analysis: false
  arg: simplifycfg
  file: ./Transforms/Scalar/SimplifyCFGPass.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass]
  requires: [TargetTransformInfoWrapperPass, AssumptionCacheTracker]
  transitive: []

LoopVersioningLICM:
  analysis: false
  arg: loop-versioning-licm
  file: ./Transforms/Scalar/LoopVersioningLICM.cpp
  optional: []
  parent: LoopPass
  preserves: [(cfg), AAResultsWrapperPass, GlobalsAAWrapperPass]
  requires: [AAResultsWrapperPass, ScalarEvolutionWrapperPass, LoopSimplify, LoopAccessLegacyAnalysis,
    OptimizationRemarkEmitterWrapperPass, GlobalsAAWrapperPass, LoopInfoWrapperPass,
    DominatorTreeWrapperPass, LCSSAWrapperPass]
  transitive: []

RegToMem:
  analysis: false
  arg: reg2mem
  file: ./Transforms/Scalar/Reg2Mem.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [BreakCriticalEdges]
  transitive: []

GVNHoistLegacyPass:
  analysis: false
  arg: gvn-hoist
  file: ./Transforms/Scalar/GVNHoist.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, MemorySSAWrapperPass, GlobalsAAWrapperPass]
  requires: [AAResultsWrapperPass, MemorySSAWrapperPass, PostDominatorTreeWrapperPass,
    DominatorTreeWrapperPass, MemoryDependenceWrapperPass]
  transitive: []

DivRemPairsLegacyPass:
  analysis: false
  arg: div-rem-pairs
  file: ./Transforms/Scalar/DivRemPairs.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), DominatorTreeWrapperPass, GlobalsAAWrapperPass]
  requires: [DominatorTreeWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

LoopInterchange:
  analysis: false
  arg: loop-interchange
  file: ./Transforms/Scalar/LoopInterchange.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, LoopInfoWrapperPass]
  requires: [AAResultsWrapperPass, ScalarEvolutionWrapperPass, LoopSimplify, OptimizationRemarkEmitterWrapperPass,
    DependenceAnalysisWrapperPass, LoopInfoWrapperPass, DominatorTreeWrapperPass,
    LCSSAWrapperPass]
  transitive: []

EarlyCSELegacyPass:
  analysis: false
  arg: early-cse
  file: ./Transforms/Scalar/EarlyCSE.cpp
  optional: []
  preserves: []
  requires: [DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass, TargetTransformInfoWrapperPass,
    AssumptionCacheTracker]
  transitive: []
EarlyCSEMemSSALegacyPass:
  analysis: false
  arg: early-cse-memssa
  file: ./Transforms/Scalar/EarlyCSE.cpp
  optional: []
  preserves: []
  requires: [TargetLibraryInfoWrapperPass, MemorySSAWrapperPass, AssumptionCacheTracker,
    DominatorTreeWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

MemCpyOptLegacyPass:
  analysis: false
  arg: memcpyopt
  file: ./Transforms/Scalar/MemCpyOptimizer.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), GlobalsAAWrapperPass, MemoryDependenceWrapperPass]
  requires: [AAResultsWrapperPass, TargetLibraryInfoWrapperPass, GlobalsAAWrapperPass,
    AssumptionCacheTracker, DominatorTreeWrapperPass, MemoryDependenceWrapperPass]
  transitive: []

InferAddressSpaces:
  analysis: false
  arg: infer-address-spaces
  file: ./Transforms/Scalar/InferAddressSpaces.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [TargetTransformInfoWrapperPass]
  transitive: []

DCELegacyPass:
  analysis: false
  arg: dce
  file: ./Transforms/Scalar/DCE.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []
DeadInstElimination:
  analysis: false
  arg: die
  file: ./Transforms/Scalar/DCE.cpp
  optional: []
  parent: BasicBlockPass
  preserves: [(cfg)]
  requires: []
  transitive: []

MergeICmps:
  analysis: false
  arg: mergeicmps
  file: ./Transforms/Scalar/MergeICmps.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

CallSiteSplittingLegacyPass:
  analysis: false
  arg: callsite-splitting
  file: ./Transforms/Scalar/CallSiteSplitting.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass]
  requires: [TargetLibraryInfoWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

LowerAtomicLegacyPass:
  analysis: false
  arg: loweratomic
  file: ./Transforms/Scalar/LowerAtomic.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

SimpleLoopUnswitchLegacyPass:
  analysis: false
  arg: simple-loop-unswitch
  file: ./Transforms/Scalar/SimpleLoopUnswitch.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [LoopInfoWrapperPass, AssumptionCacheTracker, DominatorTreeWrapperPass,
    TargetTransformInfoWrapperPass, LoopPass]
  transitive: []

ReassociateLegacyPass:
  analysis: false
  arg: reassociate
  file: ./Transforms/Scalar/Reassociate.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), GlobalsAAWrapperPass]
  requires: []
  transitive: []

RewriteStatepointsForGCLegacyPass:
  analysis: false
  arg: rewrite-statepoints-for-gc
  file: ./Transforms/Scalar/RewriteStatepointsForGC.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

AlignmentFromAssumptions:
  analysis: false
  arg: alignment-from-assumptions
  file: ./Transforms/Scalar/AlignmentFromAssumptions.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), AAResultsWrapperPass, GlobalsAAWrapperPass, LoopInfoWrapperPass,
    DominatorTreeWrapperPass, ScalarEvolutionWrapperPass]
  requires: [DominatorTreeWrapperPass, ScalarEvolutionWrapperPass, AssumptionCacheTracker]
  transitive: []

LoopDataPrefetchLegacyPass:
  analysis: false
  arg: loop-data-prefetch
  file: ./Transforms/Scalar/LoopDataPrefetch.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, LoopInfoWrapperPass, ScalarEvolutionWrapperPass]
  requires: [ScalarEvolutionWrapperPass, OptimizationRemarkEmitterWrapperPass, AssumptionCacheTracker,
    LoopInfoWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

IndVarSimplifyLegacyPass:
  analysis: false
  arg: indvars
  file: ./Transforms/Scalar/IndVarSimplify.cpp
  optional: []
  parent: LoopPass
  preserves: [(cfg)]
  requires: [LoopPass]
  transitive: []

NaryReassociateLegacyPass:
  analysis: false
  arg: nary-reassociate
  file: ./Transforms/Scalar/NaryReassociate.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, ScalarEvolutionWrapperPass, TargetLibraryInfoWrapperPass,
    (cfg)]
  requires: [ScalarEvolutionWrapperPass, TargetLibraryInfoWrapperPass, AssumptionCacheTracker,
    DominatorTreeWrapperPass, TargetTransformInfoWrapperPass]
  transitive: []

CorrelatedValuePropagation:
  analysis: false
  arg: correlated-propagation
  file: ./Transforms/Scalar/CorrelatedValuePropagation.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass, DominatorTreeWrapperPass]
  requires: [DominatorTreeWrapperPass, LazyValueInfoWrapperPass]
  transitive: []

LoopUnrollAndJam:
  analysis: false
  arg: loop-unroll-and-jam
  file: ./Transforms/Scalar/LoopUnrollAndJamPass.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [TargetTransformInfoWrapperPass, AssumptionCacheTracker, LoopPass, DependenceAnalysisWrapperPass]
  transitive: []

LoopRotateLegacyPass:
  analysis: false
  arg: loop-rotate
  file: ./Transforms/Scalar/LoopRotation.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [TargetTransformInfoWrapperPass, AssumptionCacheTracker, LoopPass]
  transitive: []

IRCELegacyPass:
  analysis: false
  arg: irce
  file: ./Transforms/Scalar/InductiveRangeCheckElimination.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [BranchProbabilityInfoWrapperPass, LoopPass]
  transitive: []

PlaceBackedgeSafepointsImpl:
  analysis: false
  arg: place-backedge-safepoints-impl
  file: ./Transforms/Scalar/PlaceSafepoints.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, ScalarEvolutionWrapperPass, TargetLibraryInfoWrapperPass,
    LoopInfoWrapperPass]
  transitive: []
PlaceSafepoints:
  analysis: false
  arg: place-safepoints
  file: ./Transforms/Scalar/PlaceSafepoints.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

LoopPredicationLegacyPass:
  analysis: false
  arg: loop-predication
  file: ./Transforms/Scalar/LoopPredication.cpp
  optional: []
  parent: LoopPass
  preserves: []
  requires: [BranchProbabilityInfoWrapperPass, LoopPass]
  transitive: []

MergedLoadStoreMotionLegacyPass:
  analysis: false
  arg: mldst-motion
  file: ./Transforms/Scalar/MergedLoadStoreMotion.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), GlobalsAAWrapperPass]
  requires: [AAResultsWrapperPass]
  transitive: []

GVNLegacyPass:
  analysis: false
  arg: gvn
  file: ./Transforms/Scalar/GVN.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, GlobalsAAWrapperPass, TargetLibraryInfoWrapperPass]
  requires: [AAResultsWrapperPass, TargetLibraryInfoWrapperPass, OptimizationRemarkEmitterWrapperPass,
    GlobalsAAWrapperPass, AssumptionCacheTracker, DominatorTreeWrapperPass, MemoryDependenceWrapperPass]
  transitive: []

ObjCARCAPElim:
  analysis: false
  arg: objc-arc-apelim
  file: ./Transforms/ObjCARC/ObjCARCAPElim.cpp
  optional: []
  parent: ModulePass
  preserves: [(cfg)]
  requires: []
  transitive: []

ObjCARCContract:
  analysis: false
  arg: objc-arc-contract
  file: ./Transforms/ObjCARC/ObjCARCContract.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [AAResultsWrapperPass, DominatorTreeWrapperPass]
  transitive: []

ObjCARCOpt:
  analysis: false
  arg: objc-arc
  file: ./Transforms/ObjCARC/ObjCARCOpts.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [AAResultsWrapperPass, ObjCARCAAWrapperPass]
  transitive: []

ObjCARCExpand:
  analysis: false
  arg: objc-arc-expand
  file: ./Transforms/ObjCARC/ObjCARCExpand.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

PAEval:
  analysis: true
  arg: pa-eval
  file: ./Transforms/ObjCARC/ProvenanceAnalysisEvaluator.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [AAResultsWrapperPass]
  transitive: []

MetaRenamer:
  analysis: false
  arg: metarenamer
  file: ./Transforms/Utils/MetaRenamer.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

StripGCRelocates:
  analysis: false
  arg: strip-gc-relocates
  file: ./Transforms/Utils/StripGCRelocates.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: []
  transitive: []

LoopVersioningPass:
  analysis: false
  arg: loop-versioning
  file: ./Transforms/Utils/LoopVersioning.cpp
  optional: []
  preserves: []
  requires: [LoopInfoWrapperPass, ScalarEvolutionWrapperPass, DominatorTreeWrapperPass,
    LoopAccessLegacyAnalysis]
  transitive: []

RewriteSymbolsLegacyPass:
  analysis: false
  arg: rewrite-symbols
  file: ./Transforms/Utils/SymbolRewriter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LibCallsShrinkWrapLegacyPass:
  analysis: false
  arg: libcalls-shrinkwrap
  file: ./Transforms/Utils/LibCallsShrinkWrap.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, GlobalsAAWrapperPass]
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

EntryExitInstrumenter:
  analysis: false
  arg: ee-instrument
  file: ./Transforms/Utils/EntryExitInstrumenter.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass]
  requires: []
  transitive: []
PostInlineEntryExitInstrumenter:
  analysis: false
  arg: post-inline-ee-instrument
  file: ./Transforms/Utils/EntryExitInstrumenter.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass]
  requires: []
  transitive: []

StripNonLineTableDebugInfo:
  analysis: false
  arg: strip-nonlinetable-debuginfo
  file: ./Transforms/Utils/StripNonLineTableDebugInfo.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []

BreakCriticalEdges:
  analysis: false
  arg: break-crit-edges
  file: ./Transforms/Utils/BreakCriticalEdges.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, LoopInfoWrapperPass]
  requires: []
  transitive: []

NameAnonGlobalLegacyPass:
  analysis: false
  arg: name-anon-globals
  file: ./Transforms/Utils/NameAnonGlobals.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

PredicateInfoPrinterLegacyPass:
  analysis: false
  arg: print-predicateinfo
  file: ./Transforms/Utils/PredicateInfo.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, AssumptionCacheTracker]
  transitive: [DominatorTreeWrapperPass]

LoopSimplify:
  analysis: false
  arg: loop-simplify
  file: ./Transforms/Utils/LoopSimplify.cpp
  optional: []
  parent: FunctionPass
  preserves: [DominatorTreeWrapperPass, LoopInfoWrapperPass, BasicAAWrapperPass, AAResultsWrapperPass,
    GlobalsAAWrapperPass, ScalarEvolutionWrapperPass, SCEVAAWrapperPass, DependenceAnalysisWrapperPass]
  requires: [DominatorTreeWrapperPass, AssumptionCacheTracker, LoopInfoWrapperPass]
  transitive: []

InstNamer:
  analysis: false
  arg: instnamer
  file: ./Transforms/Utils/InstructionNamer.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

PromoteLegacyPass:
  analysis: false
  arg: mem2reg
  file: ./Transforms/Utils/Mem2Reg.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: [DominatorTreeWrapperPass, AssumptionCacheTracker]
  transitive: []

AddDiscriminatorsLegacyPass:
  analysis: false
  arg: add-discriminators
  file: ./Transforms/Utils/AddDiscriminators.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LCSSAWrapperPass:
  analysis: false
  arg: lcssa
  file: ./Transforms/Utils/LCSSA.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg), AAResultsWrapperPass, BasicAAWrapperPass, GlobalsAAWrapperPass,
    ScalarEvolutionWrapperPass, SCEVAAWrapperPass, LCSSAVerificationPass]
  requires: [LCSSAVerificationPass, DominatorTreeWrapperPass, LoopInfoWrapperPass]
  transitive: []

LowerInvokeLegacyPass:
  analysis: false
  arg: lowerinvoke
  file: ./Transforms/Utils/LowerInvoke.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LowerSwitch:
  analysis: false
  arg: lowerswitch
  file: ./Transforms/Utils/LowerSwitch.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

UnifyFunctionExitNodes:
  analysis: false
  arg: mergereturn
  file: ./Transforms/Utils/UnifyFunctionExitNodes.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: []
  transitive: []

CoroEarly:
  analysis: false
  arg: coro-early
  file: ./Transforms/Coroutines/CoroEarly.cpp
  optional: []
  parent: FunctionPass
  preserves: [(cfg)]
  requires: []
  transitive: []

CoroElide:
  analysis: false
  arg: coro-elide
  file: ./Transforms/Coroutines/CoroElide.cpp
  optional: []
  parent: null
  preserves: []
  requires: [AAResultsWrapperPass, DominatorTreeWrapperPass]
  transitive: []

CoroSplit:
  analysis: false
  arg: coro-split
  file: ./Transforms/Coroutines/CoroSplit.cpp
  optional: []
  parent: CallGraphSCCPass
  preserves: []
  requires: []
  transitive: []

CoroCleanup:
  analysis: false
  arg: coro-cleanup
  file: ./Transforms/Coroutines/CoroCleanup.cpp
  optional: []
  parent: null
  preserves: [(all)]
  requires: []
  transitive: []

BoundsCheckingLegacyPass:
  analysis: false
  arg: bounds-checking
  file: ./Transforms/Instrumentation/BoundsChecking.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [ScalarEvolutionWrapperPass, TargetLibraryInfoWrapperPass]
  transitive: []

ThreadSanitizer:
  analysis: false
  arg: tsan
  file: ./Transforms/Instrumentation/ThreadSanitizer.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

AddressSanitizer:
  analysis: false
  arg: asan
  file: ./Transforms/Instrumentation/AddressSanitizer.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass]
  transitive: []
AddressSanitizerModule:
  analysis: false
  arg: asan-module
  file: ./Transforms/Instrumentation/AddressSanitizer.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

SanitizerCoverageModule:
  analysis: false
  arg: sancov
  file: ./Transforms/Instrumentation/SanitizerCoverage.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [DominatorTreeWrapperPass, PostDominatorTreeWrapperPass]
  transitive: []

MemorySanitizer:
  analysis: false
  arg: msan
  file: ./Transforms/Instrumentation/MemorySanitizer.cpp
  optional: []
  parent: FunctionPass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

DataFlowSanitizer:
  analysis: false
  arg: dfsan
  file: ./Transforms/Instrumentation/DataFlowSanitizer.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

InstrProfilingLegacyPass:
  analysis: false
  arg: instrprof
  file: ./Transforms/Instrumentation/InstrProfiling.cpp
  optional: []
  parent: ModulePass
  preserves: [(cfg)]
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

PGOIndirectCallPromotionLegacyPass:
  analysis: false
  arg: pgo-icall-prom
  file: ./Transforms/Instrumentation/IndirectCallPromotion.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [ProfileSummaryInfoWrapperPass]
  transitive: []

PGOMemOPSizeOptLegacyPass:
  analysis: false
  arg: pgo-memop-opt
  file: ./Transforms/Instrumentation/PGOMemOPSizeOpt.cpp
  optional: []
  parent: FunctionPass
  preserves: [GlobalsAAWrapperPass, DominatorTreeWrapperPass]
  requires: [BlockFrequencyInfoWrapperPass, OptimizationRemarkEmitterWrapperPass]
  transitive: []

HWAddressSanitizer:
  analysis: false
  arg: hwasan
  file: ./Transforms/Instrumentation/HWAddressSanitizer.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

GCOVProfilerLegacyPass:
  analysis: false
  arg: insert-gcov-profiling
  file: ./Transforms/Instrumentation/GCOVProfiling.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

EfficiencySanitizer:
  analysis: false
  arg: esan
  file: ./Transforms/Instrumentation/EfficiencySanitizer.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

PGOInstrumentationGenLegacyPass:
  analysis: false
  arg: pgo-instr-gen
  file: ./Transforms/Instrumentation/PGOInstrumentation.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [BranchProbabilityInfoWrapperPass, BlockFrequencyInfoWrapperPass]
  transitive: []
PGOInstrumentationUseLegacyPass:
  analysis: false
  arg: pgo-instr-use
  file: ./Transforms/Instrumentation/PGOInstrumentation.cpp
  optional: []
  parent: ModulePass
  preserves: []
  requires: [BranchProbabilityInfoWrapperPass, BlockFrequencyInfoWrapperPass]
  transitive: []

ObjCARCAAWrapperPass:
  analysis: true
  arg: objc-arc-aa
  file: ./Analysis/ObjCARCAliasAnalysis.cpp
  optional: []
  parent: ImmutablePass
  preserves: [(all)]
  requires: []
  transitive: []

TypeBasedAAWrapperPass:
  analysis: true
  arg: tbaa
  file: ./Analysis/TypeBasedAliasAnalysis.cpp
  optional: []
  parent: ImmutablePass
  preserves: [(all)]
  requires: []
  transitive: []

AssumptionCacheTracker:
  analysis: true
  arg: assumption-cache-tracker
  file: ./Analysis/AssumptionCache.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

BranchProbabilityInfoWrapperPass:
  analysis: true
  arg: branch-prob
  file: ./Analysis/BranchProbabilityInfo.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass, LoopInfoWrapperPass]
  transitive: []

ModuleSummaryIndexWrapperPass:
  analysis: true
  arg: module-summary-analysis
  file: ./Analysis/ModuleSummaryAnalysis.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: [ProfileSummaryInfoWrapperPass, BlockFrequencyInfoWrapperPass]
  transitive: []

RegionInfoPass:
  analysis: true
  arg: regions
  file: ./Analysis/RegionInfo.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, PostDominatorTreeWrapperPass, DominanceFrontierWrapperPass]
  transitive: [DominatorTreeWrapperPass]

AAResultsWrapperPass:
  analysis: true
  arg: aa
  file: ./Analysis/AliasAnalysis.cpp
  optional: [ScopedNoAliasAAWrapperPass, TypeBasedAAWrapperPass, objcarc, GlobalsAAWrapperPass,
    SCEVAAWrapperPass, CFLAndersAAWrapperPass, CFLSteensAAWrapperPass]
  parent: FunctionPass
  preserves: [(all)]
  requires: [CFLSteensAAWrapperPass, TargetLibraryInfoWrapperPass, SCEVAAWrapperPass,
    TypeBasedAAWrapperPass, GlobalsAAWrapperPass, ScopedNoAliasAAWrapperPass, BasicAAWrapperPass,
    ObjCARCAAWrapperPass, ExternalAAWrapperPass, CFLAndersAAWrapperPass]
  transitive: []
ExternalAAWrapperPass:
  analysis: true
  arg: external-aa
  file: ./Analysis/AliasAnalysis.cpp
  optional: []
  parent: null
  preserves: [(all)]
  requires: []
  transitive: []

LCSSAVerificationPass:
  analysis: false
  arg: lcssa-verification
  file: ./Analysis/LoopPass.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

MustExecutePrinter:
  analysis: true
  arg: print-mustexecute
  file: ./Analysis/MustExecute.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, LoopInfoWrapperPass]
  transitive: []

CFLAndersAAWrapperPass:
  analysis: true
  arg: cfl-anders-aa
  file: ./Analysis/CFLAndersAliasAnalysis.cpp
  optional: []
  parent: ImmutablePass
  preserves: [(all)]
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

LoopAccessLegacyAnalysis:
  analysis: true
  arg: loop-accesses
  file: ./Analysis/LoopAccessAnalysis.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [AAResultsWrapperPass, DominatorTreeWrapperPass, ScalarEvolutionWrapperPass,
    LoopInfoWrapperPass]
  transitive: []

IVUsersWrapperPass:
  analysis: true
  arg: iv-users
  file: ./Analysis/IVUsers.cpp
  optional: []
  parent: LoopPass
  preserves: [(all)]
  requires: [LoopInfoWrapperPass, ScalarEvolutionWrapperPass, DominatorTreeWrapperPass,
    AssumptionCacheTracker]
  transitive: []

ScalarEvolutionWrapperPass:
  analysis: true
  arg: scalar-evolution
  file: ./Analysis/ScalarEvolution.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [LoopInfoWrapperPass, DominatorTreeWrapperPass, AssumptionCacheTracker,
    TargetLibraryInfoWrapperPass]
  transitive: [AssumptionCacheTracker, LoopInfoWrapperPass, DominatorTreeWrapperPass,
    TargetLibraryInfoWrapperPass]

PostDominatorTreeWrapperPass:
  analysis: true
  arg: postdomtree
  file: ./Analysis/PostDominators.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

ModuleDebugInfoPrinter:
  analysis: true
  arg: module-debuginfo
  file: ./Analysis/ModuleDebugInfoPrinter.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []

CallGraphDOTPrinter:
  analysis: false
  arg: dot-callgraph
  file: ./Analysis/CallPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
CallGraphViewer:
  analysis: false
  arg: view-callgraph
  file: ./Analysis/CallPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

GlobalsAAWrapperPass:
  analysis: true
  arg: globals-aa
  file: ./Analysis/GlobalsModRef.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: [CallGraphWrapperPass, TargetLibraryInfoWrapperPass]
  transitive: []

LoopInfoWrapperPass:
  analysis: true
  arg: loops
  file: ./Analysis/LoopInfo.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass]
  transitive: []

CFLSteensAAWrapperPass:
  analysis: true
  arg: cfl-steens-aa
  file: ./Analysis/CFLSteensAliasAnalysis.cpp
  optional: []
  parent: ImmutablePass
  preserves: [(all)]
  requires: [TargetLibraryInfoWrapperPass]
  transitive: []

CostModelAnalysis:
  analysis: true
  arg: cost-model
  file: ./Analysis/CostModel.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

DummyCGSCCPass:
  analysis: false
  arg: DummyCGSCCPass
  file: ./Analysis/CallGraphSCCPass.cpp
  optional: []
  parent: CallGraphSCCPass
  preserves: [(all)]
  requires: []
  transitive: []

Delinearization:
  analysis: true
  arg: delinearize
  file: ./Analysis/Delinearization.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [LoopInfoWrapperPass, ScalarEvolutionWrapperPass]
  transitive: []

BasicAAWrapperPass:
  analysis: true
  arg: basicaa
  file: ./Analysis/BasicAliasAnalysis.cpp
  optional: [PhiValuesWrapperPass]
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass, AssumptionCacheTracker]
  transitive: []

DominanceFrontierWrapperPass:
  analysis: true
  arg: domfrontier
  file: ./Analysis/DominanceFrontier.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass]
  transitive: []

BlockFrequencyInfoWrapperPass:
  analysis: true
  arg: block-freq
  file: ./Analysis/BlockFrequencyInfo.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [BranchProbabilityInfoWrapperPass, LoopInfoWrapperPass]
  transitive: []

InstCount:
  analysis: true
  arg: instcount
  file: ./Analysis/InstCount.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

MemorySSAPrinterLegacyPass:
  analysis: false
  arg: print-memoryssa
  file: ./Analysis/MemorySSA.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [MemorySSAWrapperPass]
  transitive: []
MemorySSAWrapperPass:
  analysis: true
  arg: memoryssa
  file: ./Analysis/MemorySSA.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [AAResultsWrapperPass, DominatorTreeWrapperPass]
  transitive: [DominatorTreeWrapperPass, AAResultsWrapperPass]

TargetTransformInfoWrapperPass:
  analysis: true
  arg: tti
  file: ./Analysis/TargetTransformInfo.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LazyBlockFrequencyInfoPass:
  analysis: true
  arg: lazy-block-freq
  file: ./Analysis/LazyBlockFrequencyInfo.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [LazyBPIPass, DominatorTreeWrapperPass, LoopInfoWrapperPass]
  transitive: []

MemDepPrinter:
  analysis: true
  arg: print-memdeps
  file: ./Analysis/MemDepPrinter.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [MemoryDependenceWrapperPass]
  transitive: [AAResultsWrapperPass, MemoryDependenceWrapperPass]

AAEvalLegacyPass:
  analysis: true
  arg: aa-eval
  file: ./Analysis/AliasAnalysisEvaluator.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [AAResultsWrapperPass]
  transitive: []

CallGraphPrinterLegacyPass:
  analysis: true
  arg: print-callgraph
  file: ./Analysis/CallGraph.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: [CallGraphWrapperPass]
  transitive: [CallGraphWrapperPass]
CallGraphWrapperPass:
  analysis: true
  arg: basiccg
  file: ./Analysis/CallGraph.cpp
  optional: []
  parent: ModulePass
  preserves: [(all)]
  requires: []
  transitive: []

ScopedNoAliasAAWrapperPass:
  analysis: true
  arg: scoped-noalias
  file: ./Analysis/ScopedNoAliasAA.cpp
  optional: []
  parent: ImmutablePass
  preserves: [(all)]
  requires: []
  transitive: []

ProfileSummaryInfoWrapperPass:
  analysis: true
  arg: profile-summary-info
  file: ./Analysis/ProfileSummaryInfo.cpp
  optional: []
  parent: ImmutablePass
  preserves: [(all)]
  requires: []
  transitive: []

LazyBranchProbabilityInfoPass:
  analysis: true
  arg: lazy-branch-prob
  file: ./Analysis/LazyBranchProbabilityInfo.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass, LoopInfoWrapperPass]
  transitive: []

PhiValuesWrapperPass:
  analysis: true
  arg: phi-values
  file: ./Analysis/PhiValues.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

AliasSetPrinter:
  analysis: true
  arg: print-alias-sets
  file: ./Analysis/AliasSetTracker.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [AAResultsWrapperPass]
  transitive: []

Lint:
  analysis: true
  arg: lint
  file: ./Analysis/Lint.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [AAResultsWrapperPass, DominatorTreeWrapperPass, TargetLibraryInfoWrapperPass,
    AssumptionCacheTracker]
  transitive: []

RegionOnlyPrinter:
  analysis: true
  arg: dot-regions-only
  file: ./Analysis/RegionPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
RegionOnlyViewer:
  analysis: true
  arg: view-regions-only
  file: ./Analysis/RegionPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
RegionPrinter:
  analysis: true
  arg: dot-regions
  file: ./Analysis/RegionPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
RegionViewer:
  analysis: true
  arg: view-regions
  file: ./Analysis/RegionPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

OptimizationRemarkEmitterWrapperPass:
  analysis: true
  arg: opt-remark-emitter
  file: ./Analysis/OptimizationRemarkEmitter.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [LazyBFIPass]
  transitive: []

DivergenceAnalysis:
  analysis: true
  arg: divergence
  file: ./Analysis/DivergenceAnalysis.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, PostDominatorTreeWrapperPass]
  transitive: []

TargetLibraryInfoWrapperPass:
  analysis: true
  arg: targetlibinfo
  file: ./Analysis/TargetLibraryInfo.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

LazyValueInfoPrinter:
  analysis: false
  arg: print-lazy-value-info
  file: ./Analysis/LazyValueInfo.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, LazyValueInfoWrapperPass]
  transitive: []
LazyValueInfoWrapperPass:
  analysis: true
  arg: lazy-value-info
  file: ./Analysis/LazyValueInfo.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [TargetLibraryInfoWrapperPass, AssumptionCacheTracker]
  transitive: []

CFGOnlyPrinterLegacyPass:
  analysis: true
  arg: dot-cfg-only
  file: ./Analysis/CFGPrinter.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []
CFGOnlyViewerLegacyPass:
  analysis: true
  arg: view-cfg-only
  file: ./Analysis/CFGPrinter.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []
CFGPrinterLegacyPass:
  analysis: true
  arg: dot-cfg
  file: ./Analysis/CFGPrinter.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []
CFGViewerLegacyPass:
  analysis: true
  arg: view-cfg
  file: ./Analysis/CFGPrinter.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

DomOnlyPrinter:
  analysis: false
  arg: dot-dom-only
  file: ./Analysis/DomPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
DomOnlyViewer:
  analysis: false
  arg: view-dom-only
  file: ./Analysis/DomPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
DomPrinter:
  analysis: false
  arg: dot-dom
  file: ./Analysis/DomPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
DomViewer:
  analysis: false
  arg: view-dom
  file: ./Analysis/DomPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
PostDomOnlyPrinter:
  analysis: false
  arg: dot-postdom-only
  file: ./Analysis/DomPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
PostDomOnlyViewer:
  analysis: false
  arg: view-postdom-only
  file: ./Analysis/DomPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
PostDomPrinter:
  analysis: false
  arg: dot-postdom
  file: ./Analysis/DomPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []
PostDomViewer:
  analysis: false
  arg: view-postdom
  file: ./Analysis/DomPrinter.cpp
  optional: []
  preserves: []
  requires: []
  transitive: []

MemoryDependenceWrapperPass:
  analysis: true
  arg: memdep
  file: ./Analysis/MemoryDependenceAnalysis.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [AAResultsWrapperPass, TargetLibraryInfoWrapperPass, AssumptionCacheTracker,
    DominatorTreeWrapperPass, PhiValuesWrapperPass]
  transitive: [AAResultsWrapperPass, TargetLibraryInfoWrapperPass]

DependenceAnalysisWrapperPass:
  analysis: true
  arg: da
  file: ./Analysis/DependenceAnalysis.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [AAResultsWrapperPass, LoopInfoWrapperPass, ScalarEvolutionWrapperPass]
  transitive: [AAResultsWrapperPass, ScalarEvolutionWrapperPass, LoopInfoWrapperPass]

MemDerefPrinter:
  analysis: true
  arg: print-memderefs
  file: ./Analysis/MemDerefPrinter.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

SCEVAAWrapperPass:
  analysis: true
  arg: scev-aa
  file: ./Analysis/ScalarEvolutionAliasAnalysis.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [ScalarEvolutionWrapperPass]
  transitive: []

IntervalPartition:
  analysis: true
  arg: intervals
  file: ./Analysis/IntervalPartition.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: []
  transitive: []

DemandedBitsWrapperPass:
  analysis: false
  arg: demanded-bits
  file: ./Analysis/DemandedBits.cpp
  optional: []
  parent: FunctionPass
  preserves: [(all)]
  requires: [DominatorTreeWrapperPass, AssumptionCacheTracker]
  transitive: []

