mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
99ee90db82
Currently, this pass only focuses on *trivial* loop unswitching. At that reduced problem it remains significantly better than the current loop unswitch: - Old pass is worse than cubic complexity. New pass is (I think) linear. - New pass is much simpler in its design by focusing on full unswitching. (See below for details on this). - New pass doesn't carry state for thresholds between pass iterations. - New pass doesn't carry state for correctness (both miscompile and infloop) between pass iterations. - New pass produces substantially better code after unswitching. - New pass can handle more trivial unswitch cases. - New pass doesn't recompute the dominator tree for the entire function and instead incrementally updates it. I've ported all of the trivial unswitching test cases from the old pass to the new one to make sure that major functionality isn't lost in the process. For several of the test cases I've worked to improve the precision and rigor of the CHECKs, but for many I've just updated them to handle the new IR produced. My initial motivation was the fact that the old pass carried state in very unreliable ways between pass iterations, and these mechansims were incompatible with the new pass manager. However, I discovered many more improvements to make along the way. This pass makes two very significant assumptions that enable most of these improvements: 1) Focus on *full* unswitching -- that is, completely removing whatever control flow construct is being unswitched from the loop. In the case of trivial unswitching, this means removing the trivial (exiting) edge. In non-trivial unswitching, this means removing the branch or switch itself. This is in opposition to *partial* unswitching where some part of the unswitched control flow remains in the loop. Partial unswitching only really applies to switches and to folded branches. These are very similar to full unrolling and partial unrolling. The full form is an effective canonicalization, the partial form needs a complex cost model, cannot be iterated, isn't canonicalizing, and should be a separate pass that runs very late (much like unrolling). 2) Leverage LLVM's Loop machinery to the fullest. The original unswitch dates from a time when a great deal of LLVM's loop infrastructure was missing, ineffective, and/or unreliable. As a consequence, a lot of complexity was added which we no longer need. With these two overarching principles, I think we can build a fast and effective unswitcher that fits in well in the new PM and in the canonicalization pipeline. Some of the remaining functionality around partial unswitching may not be relevant today (not many test cases or benchmarks I can find) but if they are I'd like to add support for them as a separate layer that runs very late in the pipeline. Purely to make reviewing and introducing this code more manageable, I've split this into first a trivial-unswitch-only pass and in the next patch I'll add support for full non-trivial unswitching against a *fixed* threshold, exactly like full unrolling. I even plan to re-use the unrolling thresholds, as these are incredibly similar cost tradeoffs: we're cloning a loop body in order to end up with simplified control flow. We should only do that when the total growth is reasonably small. One of the biggest changes with this pass compared to the previous one is that previously, each individual trivial exiting edge from a switch was unswitched separately as a branch. Now, we unswitch the entire switch at once, with cases going to the various destinations. This lets us unswitch multiple exiting edges in a single operation and also avoids numerous extremely bad behaviors, where we would introduce 1000s of branches to test for thousands of possible values, all of which would take the exact same exit path bypassing the loop. Now we will use a switch with 1000s of cases that can be efficiently lowered into a jumptable. This avoids relying on somehow forming a switch out of the branches or getting horrible code if that fails for any reason. Another significant change is that this pass actively updates the CFG based on unswitching. For trivial unswitching, this is actually very easy because of the definition of loop simplified form. Doing this makes the code coming out of loop unswitch dramatically more friendly. We still should run loop-simplifycfg (at the least) after this to clean up, but it will have to do a lot less work. Finally, this pass makes much fewer attempts to simplify instructions based on the unswitch. Something like loop-instsimplify, instcombine, or GVN can be used to do increasingly powerful simplifications based on the now dominating predicate. The old simplifications are things that something like loop-instsimplify should get today or a very, very basic loop-instcombine could get. Keeping that logic separate is a big simplifying technique. Most of the code in this pass that isn't in the old one has to do with achieving specific goals: - Updating the dominator tree as we go - Unswitching all cases in a switch in a single step. I think it is still shorter than just the trivial unswitching code in the old pass despite having this functionality. Differential Revision: https://reviews.llvm.org/D32409 llvm-svn: 301576
375 lines
19 KiB
C++
375 lines
19 KiB
C++
//===- llvm/InitializePasses.h -------- Initialize All Passes ---*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains the declarations for the pass initialization routines
|
|
// for the entire LLVM project.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_INITIALIZEPASSES_H
|
|
#define LLVM_INITIALIZEPASSES_H
|
|
|
|
namespace llvm {
|
|
|
|
class PassRegistry;
|
|
|
|
/// Initialize all passes linked into the TransformUtils library.
|
|
void initializeCore(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the TransformUtils library.
|
|
void initializeTransformUtils(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the ScalarOpts library.
|
|
void initializeScalarOpts(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the ObjCARCOpts library.
|
|
void initializeObjCARCOpts(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the Vectorize library.
|
|
void initializeVectorization(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the InstCombine library.
|
|
void initializeInstCombine(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the IPO library.
|
|
void initializeIPO(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the Instrumentation library.
|
|
void initializeInstrumentation(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the Analysis library.
|
|
void initializeAnalysis(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the Coroutines library.
|
|
void initializeCoroutines(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the CodeGen library.
|
|
void initializeCodeGen(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the GlobalISel library.
|
|
void initializeGlobalISel(PassRegistry&);
|
|
|
|
/// Initialize all passes linked into the CodeGen library.
|
|
void initializeTarget(PassRegistry&);
|
|
|
|
void initializeAAEvalLegacyPassPass(PassRegistry&);
|
|
void initializeAAResultsWrapperPassPass(PassRegistry&);
|
|
void initializeADCELegacyPassPass(PassRegistry&);
|
|
void initializeAddDiscriminatorsLegacyPassPass(PassRegistry&);
|
|
void initializeAddressSanitizerModulePass(PassRegistry&);
|
|
void initializeAddressSanitizerPass(PassRegistry&);
|
|
void initializeAliasSetPrinterPass(PassRegistry&);
|
|
void initializeAlignmentFromAssumptionsPass(PassRegistry&);
|
|
void initializeAlwaysInlinerLegacyPassPass(PassRegistry&);
|
|
void initializeArgPromotionPass(PassRegistry&);
|
|
void initializeAssumptionCacheTrackerPass(PassRegistry&);
|
|
void initializeAtomicExpandPass(PassRegistry&);
|
|
void initializeBBVectorizePass(PassRegistry&);
|
|
void initializeBDCELegacyPassPass(PassRegistry&);
|
|
void initializeBarrierNoopPass(PassRegistry&);
|
|
void initializeBasicAAWrapperPassPass(PassRegistry&);
|
|
void initializeBlockExtractorPassPass(PassRegistry&);
|
|
void initializeBlockFrequencyInfoWrapperPassPass(PassRegistry&);
|
|
void initializeBoundsCheckingPass(PassRegistry&);
|
|
void initializeBranchCoalescingPass(PassRegistry&);
|
|
void initializeBranchFolderPassPass(PassRegistry&);
|
|
void initializeBranchProbabilityInfoWrapperPassPass(PassRegistry&);
|
|
void initializeBranchRelaxationPass(PassRegistry&);
|
|
void initializeBreakCriticalEdgesPass(PassRegistry&);
|
|
void initializeCFGOnlyPrinterLegacyPassPass(PassRegistry&);
|
|
void initializeCFGOnlyViewerLegacyPassPass(PassRegistry&);
|
|
void initializeCFGPrinterLegacyPassPass(PassRegistry&);
|
|
void initializeCFGSimplifyPassPass(PassRegistry&);
|
|
void initializeLateCFGSimplifyPassPass(PassRegistry&);
|
|
void initializeCFGViewerLegacyPassPass(PassRegistry&);
|
|
void initializeCFLAndersAAWrapperPassPass(PassRegistry&);
|
|
void initializeCFLSteensAAWrapperPassPass(PassRegistry&);
|
|
void initializeCallGraphDOTPrinterPass(PassRegistry&);
|
|
void initializeCallGraphPrinterLegacyPassPass(PassRegistry&);
|
|
void initializeCallGraphViewerPass(PassRegistry&);
|
|
void initializeCallGraphWrapperPassPass(PassRegistry&);
|
|
void initializeCodeGenPreparePass(PassRegistry&);
|
|
void initializeConstantHoistingLegacyPassPass(PassRegistry&);
|
|
void initializeConstantMergeLegacyPassPass(PassRegistry&);
|
|
void initializeConstantPropagationPass(PassRegistry&);
|
|
void initializeCorrelatedValuePropagationPass(PassRegistry&);
|
|
void initializeCostModelAnalysisPass(PassRegistry&);
|
|
void initializeCountingFunctionInserterPass(PassRegistry&);
|
|
void initializeCrossDSOCFIPass(PassRegistry&);
|
|
void initializeDAEPass(PassRegistry&);
|
|
void initializeDAHPass(PassRegistry&);
|
|
void initializeDCELegacyPassPass(PassRegistry&);
|
|
void initializeDSELegacyPassPass(PassRegistry&);
|
|
void initializeDataFlowSanitizerPass(PassRegistry&);
|
|
void initializeDeadInstEliminationPass(PassRegistry&);
|
|
void initializeDeadMachineInstructionElimPass(PassRegistry&);
|
|
void initializeDelinearizationPass(PassRegistry&);
|
|
void initializeDemandedBitsWrapperPassPass(PassRegistry&);
|
|
void initializeDependenceAnalysisPass(PassRegistry&);
|
|
void initializeDependenceAnalysisWrapperPassPass(PassRegistry&);
|
|
void initializeDetectDeadLanesPass(PassRegistry&);
|
|
void initializeDivergenceAnalysisPass(PassRegistry&);
|
|
void initializeDomOnlyPrinterPass(PassRegistry&);
|
|
void initializeDomOnlyViewerPass(PassRegistry&);
|
|
void initializeDomPrinterPass(PassRegistry&);
|
|
void initializeDomViewerPass(PassRegistry&);
|
|
void initializeDominanceFrontierWrapperPassPass(PassRegistry&);
|
|
void initializeDominatorTreeWrapperPassPass(PassRegistry&);
|
|
void initializeDwarfEHPreparePass(PassRegistry&);
|
|
void initializeEarlyCSELegacyPassPass(PassRegistry&);
|
|
void initializeEarlyCSEMemSSALegacyPassPass(PassRegistry&);
|
|
void initializeEarlyIfConverterPass(PassRegistry&);
|
|
void initializeEdgeBundlesPass(PassRegistry&);
|
|
void initializeEfficiencySanitizerPass(PassRegistry&);
|
|
void initializeEliminateAvailableExternallyLegacyPassPass(PassRegistry&);
|
|
void initializeExpandISelPseudosPass(PassRegistry&);
|
|
void initializeExpandPostRAPass(PassRegistry&);
|
|
void initializeExternalAAWrapperPassPass(PassRegistry&);
|
|
void initializeFEntryInserterPass(PassRegistry&);
|
|
void initializeFinalizeMachineBundlesPass(PassRegistry&);
|
|
void initializeFlattenCFGPassPass(PassRegistry&);
|
|
void initializeFloat2IntLegacyPassPass(PassRegistry&);
|
|
void initializeForceFunctionAttrsLegacyPassPass(PassRegistry&);
|
|
void initializeForwardControlFlowIntegrityPass(PassRegistry&);
|
|
void initializeFuncletLayoutPass(PassRegistry&);
|
|
void initializeFunctionImportLegacyPassPass(PassRegistry&);
|
|
void initializeGCMachineCodeAnalysisPass(PassRegistry&);
|
|
void initializeGCModuleInfoPass(PassRegistry&);
|
|
void initializeGCOVProfilerLegacyPassPass(PassRegistry&);
|
|
void initializeGVNHoistLegacyPassPass(PassRegistry&);
|
|
void initializeGVNLegacyPassPass(PassRegistry&);
|
|
void initializeGlobalDCELegacyPassPass(PassRegistry&);
|
|
void initializeGlobalMergePass(PassRegistry&);
|
|
void initializeGlobalOptLegacyPassPass(PassRegistry&);
|
|
void initializeGlobalSplitPass(PassRegistry&);
|
|
void initializeGlobalsAAWrapperPassPass(PassRegistry&);
|
|
void initializeGuardWideningLegacyPassPass(PassRegistry&);
|
|
void initializeIPCPPass(PassRegistry&);
|
|
void initializeIPSCCPLegacyPassPass(PassRegistry&);
|
|
void initializeIRTranslatorPass(PassRegistry&);
|
|
void initializeIVUsersWrapperPassPass(PassRegistry&);
|
|
void initializeIfConverterPass(PassRegistry&);
|
|
void initializeImplicitNullChecksPass(PassRegistry&);
|
|
void initializeIndVarSimplifyLegacyPassPass(PassRegistry&);
|
|
void initializeInductiveRangeCheckEliminationPass(PassRegistry&);
|
|
void initializeInferAddressSpacesPass(PassRegistry&);
|
|
void initializeInferFunctionAttrsLegacyPassPass(PassRegistry&);
|
|
void initializeInlineCostAnalysisPass(PassRegistry&);
|
|
void initializeInstCountPass(PassRegistry&);
|
|
void initializeInstNamerPass(PassRegistry&);
|
|
void initializeInstSimplifierPass(PassRegistry&);
|
|
void initializeInstrProfilingLegacyPassPass(PassRegistry&);
|
|
void initializeInstructionCombiningPassPass(PassRegistry&);
|
|
void initializeInstructionSelectPass(PassRegistry&);
|
|
void initializeInterleavedAccessPass(PassRegistry&);
|
|
void initializeInternalizeLegacyPassPass(PassRegistry&);
|
|
void initializeIntervalPartitionPass(PassRegistry&);
|
|
void initializeJumpThreadingPass(PassRegistry&);
|
|
void initializeLCSSAVerificationPassPass(PassRegistry&);
|
|
void initializeLCSSAWrapperPassPass(PassRegistry&);
|
|
void initializeLazyBlockFrequencyInfoPassPass(PassRegistry&);
|
|
void initializeLazyBranchProbabilityInfoPassPass(PassRegistry&);
|
|
void initializeLazyMachineBlockFrequencyInfoPassPass(PassRegistry&);
|
|
void initializeLazyValueInfoWrapperPassPass(PassRegistry&);
|
|
void initializeLegacyLICMPassPass(PassRegistry&);
|
|
void initializeLegacyLoopSinkPassPass(PassRegistry&);
|
|
void initializeLazyValueInfoPrinterPass(PassRegistry&);
|
|
void initializeLegalizerPass(PassRegistry&);
|
|
void initializeLibCallsShrinkWrapLegacyPassPass(PassRegistry&);
|
|
void initializeLintPass(PassRegistry&);
|
|
void initializeLiveDebugValuesPass(PassRegistry&);
|
|
void initializeLiveDebugVariablesPass(PassRegistry&);
|
|
void initializeLiveIntervalsPass(PassRegistry&);
|
|
void initializeLiveRegMatrixPass(PassRegistry&);
|
|
void initializeLiveStacksPass(PassRegistry&);
|
|
void initializeLiveVariablesPass(PassRegistry&);
|
|
void initializeLoadCombinePass(PassRegistry&);
|
|
void initializeLoadStoreVectorizerPass(PassRegistry&);
|
|
void initializeLoaderPassPass(PassRegistry&);
|
|
void initializeLocalStackSlotPassPass(PassRegistry&);
|
|
void initializeLoopAccessLegacyAnalysisPass(PassRegistry&);
|
|
void initializeLoopDataPrefetchLegacyPassPass(PassRegistry&);
|
|
void initializeLoopDeletionLegacyPassPass(PassRegistry&);
|
|
void initializeLoopDistributeLegacyPass(PassRegistry&);
|
|
void initializeLoopExtractorPass(PassRegistry&);
|
|
void initializeLoopIdiomRecognizeLegacyPassPass(PassRegistry&);
|
|
void initializeLoopInfoWrapperPassPass(PassRegistry&);
|
|
void initializeLoopInstSimplifyLegacyPassPass(PassRegistry&);
|
|
void initializeLoopInterchangePass(PassRegistry&);
|
|
void initializeLoopLoadEliminationPass(PassRegistry&);
|
|
void initializeLoopPassPass(PassRegistry&);
|
|
void initializeLoopPredicationLegacyPassPass(PassRegistry&);
|
|
void initializeLoopRerollPass(PassRegistry&);
|
|
void initializeLoopRotateLegacyPassPass(PassRegistry&);
|
|
void initializeLoopSimplifyCFGLegacyPassPass(PassRegistry&);
|
|
void initializeLoopSimplifyPass(PassRegistry&);
|
|
void initializeLoopStrengthReducePass(PassRegistry&);
|
|
void initializeLoopUnrollPass(PassRegistry&);
|
|
void initializeLoopUnswitchPass(PassRegistry&);
|
|
void initializeLoopVectorizePass(PassRegistry&);
|
|
void initializeLoopVersioningLICMPass(PassRegistry&);
|
|
void initializeLoopVersioningPassPass(PassRegistry&);
|
|
void initializeLowerAtomicLegacyPassPass(PassRegistry&);
|
|
void initializeLowerEmuTLSPass(PassRegistry&);
|
|
void initializeLowerExpectIntrinsicPass(PassRegistry&);
|
|
void initializeLowerGuardIntrinsicLegacyPassPass(PassRegistry&);
|
|
void initializeLowerIntrinsicsPass(PassRegistry&);
|
|
void initializeLowerInvokeLegacyPassPass(PassRegistry&);
|
|
void initializeLowerSwitchPass(PassRegistry&);
|
|
void initializeLowerTypeTestsPass(PassRegistry&);
|
|
void initializeMIRPrintingPassPass(PassRegistry&);
|
|
void initializeMachineBlockFrequencyInfoPass(PassRegistry&);
|
|
void initializeMachineBlockPlacementPass(PassRegistry&);
|
|
void initializeMachineBlockPlacementStatsPass(PassRegistry&);
|
|
void initializeMachineBranchProbabilityInfoPass(PassRegistry&);
|
|
void initializeMachineCSEPass(PassRegistry&);
|
|
void initializeMachineCombinerPass(PassRegistry&);
|
|
void initializeMachineCopyPropagationPass(PassRegistry&);
|
|
void initializeMachineDominanceFrontierPass(PassRegistry&);
|
|
void initializeMachineDominatorTreePass(PassRegistry&);
|
|
void initializeMachineFunctionPrinterPassPass(PassRegistry&);
|
|
void initializeMachineLICMPass(PassRegistry&);
|
|
void initializeMachineLoopInfoPass(PassRegistry&);
|
|
void initializeMachineModuleInfoPass(PassRegistry&);
|
|
void initializeMachineOptimizationRemarkEmitterPassPass(PassRegistry&);
|
|
void initializeMachineOutlinerPass(PassRegistry&);
|
|
void initializeMachinePipelinerPass(PassRegistry&);
|
|
void initializeMachinePostDominatorTreePass(PassRegistry&);
|
|
void initializeMachineRegionInfoPassPass(PassRegistry&);
|
|
void initializeMachineSchedulerPass(PassRegistry&);
|
|
void initializeMachineSinkingPass(PassRegistry&);
|
|
void initializeMachineTraceMetricsPass(PassRegistry&);
|
|
void initializeMachineVerifierPassPass(PassRegistry&);
|
|
void initializeMemCpyOptLegacyPassPass(PassRegistry&);
|
|
void initializeMemDepPrinterPass(PassRegistry&);
|
|
void initializeMemDerefPrinterPass(PassRegistry&);
|
|
void initializeMemoryDependenceWrapperPassPass(PassRegistry&);
|
|
void initializeMemorySSAPrinterLegacyPassPass(PassRegistry&);
|
|
void initializeMemorySSAWrapperPassPass(PassRegistry&);
|
|
void initializeMemorySanitizerPass(PassRegistry&);
|
|
void initializeMergeFunctionsPass(PassRegistry&);
|
|
void initializeMergedLoadStoreMotionLegacyPassPass(PassRegistry&);
|
|
void initializeMetaRenamerPass(PassRegistry&);
|
|
void initializeModuleDebugInfoPrinterPass(PassRegistry&);
|
|
void initializeModuleSummaryIndexWrapperPassPass(PassRegistry&);
|
|
void initializeNameAnonGlobalLegacyPassPass(PassRegistry&);
|
|
void initializeNaryReassociateLegacyPassPass(PassRegistry&);
|
|
void initializeNewGVNLegacyPassPass(PassRegistry&);
|
|
void initializeObjCARCAAWrapperPassPass(PassRegistry&);
|
|
void initializeObjCARCAPElimPass(PassRegistry&);
|
|
void initializeObjCARCContractPass(PassRegistry&);
|
|
void initializeObjCARCExpandPass(PassRegistry&);
|
|
void initializeObjCARCOptPass(PassRegistry&);
|
|
void initializeOptimizationRemarkEmitterWrapperPassPass(PassRegistry&);
|
|
void initializeOptimizePHIsPass(PassRegistry&);
|
|
void initializePAEvalPass(PassRegistry&);
|
|
void initializePEIPass(PassRegistry&);
|
|
void initializePGOIndirectCallPromotionLegacyPassPass(PassRegistry&);
|
|
void initializePGOInstrumentationGenLegacyPassPass(PassRegistry&);
|
|
void initializePGOInstrumentationUseLegacyPassPass(PassRegistry&);
|
|
void initializePGOMemOPSizeOptLegacyPassPass(PassRegistry&);
|
|
void initializePHIEliminationPass(PassRegistry&);
|
|
void initializePartialInlinerLegacyPassPass(PassRegistry&);
|
|
void initializePartiallyInlineLibCallsLegacyPassPass(PassRegistry&);
|
|
void initializePatchableFunctionPass(PassRegistry&);
|
|
void initializePeepholeOptimizerPass(PassRegistry&);
|
|
void initializePhysicalRegisterUsageInfoPass(PassRegistry&);
|
|
void initializePlaceBackedgeSafepointsImplPass(PassRegistry&);
|
|
void initializePlaceSafepointsPass(PassRegistry&);
|
|
void initializePostDomOnlyPrinterPass(PassRegistry&);
|
|
void initializePostDomOnlyViewerPass(PassRegistry&);
|
|
void initializePostDomPrinterPass(PassRegistry&);
|
|
void initializePostDomViewerPass(PassRegistry&);
|
|
void initializePostDominatorTreeWrapperPassPass(PassRegistry&);
|
|
void initializePostMachineSchedulerPass(PassRegistry&);
|
|
void initializePostOrderFunctionAttrsLegacyPassPass(PassRegistry&);
|
|
void initializePostRAHazardRecognizerPass(PassRegistry&);
|
|
void initializePostRASchedulerPass(PassRegistry&);
|
|
void initializePreISelIntrinsicLoweringLegacyPassPass(PassRegistry&);
|
|
void initializePredicateInfoPrinterLegacyPassPass(PassRegistry&);
|
|
void initializePrintBasicBlockPassPass(PassRegistry&);
|
|
void initializePrintFunctionPassWrapperPass(PassRegistry&);
|
|
void initializePrintModulePassWrapperPass(PassRegistry&);
|
|
void initializeProcessImplicitDefsPass(PassRegistry&);
|
|
void initializeProfileSummaryInfoWrapperPassPass(PassRegistry&);
|
|
void initializePromoteLegacyPassPass(PassRegistry&);
|
|
void initializePruneEHPass(PassRegistry&);
|
|
void initializeRAGreedyPass(PassRegistry&);
|
|
void initializeReassociateLegacyPassPass(PassRegistry&);
|
|
void initializeRegBankSelectPass(PassRegistry&);
|
|
void initializeRegToMemPass(PassRegistry&);
|
|
void initializeRegionInfoPassPass(PassRegistry&);
|
|
void initializeRegionOnlyPrinterPass(PassRegistry&);
|
|
void initializeRegionOnlyViewerPass(PassRegistry&);
|
|
void initializeRegionPrinterPass(PassRegistry&);
|
|
void initializeRegionViewerPass(PassRegistry&);
|
|
void initializeRegisterCoalescerPass(PassRegistry&);
|
|
void initializeRenameIndependentSubregsPass(PassRegistry&);
|
|
void initializeResetMachineFunctionPass(PassRegistry&);
|
|
void initializeReversePostOrderFunctionAttrsLegacyPassPass(PassRegistry&);
|
|
void initializeRewriteStatepointsForGCPass(PassRegistry&);
|
|
void initializeRewriteSymbolsLegacyPassPass(PassRegistry&);
|
|
void initializeSCCPLegacyPassPass(PassRegistry&);
|
|
void initializeSCEVAAWrapperPassPass(PassRegistry&);
|
|
void initializeSLPVectorizerPass(PassRegistry&);
|
|
void initializeSROALegacyPassPass(PassRegistry&);
|
|
void initializeSafeStackPass(PassRegistry&);
|
|
void initializeSampleProfileLoaderLegacyPassPass(PassRegistry&);
|
|
void initializeSanitizerCoverageModulePass(PassRegistry&);
|
|
void initializeScalarEvolutionWrapperPassPass(PassRegistry&);
|
|
void initializeScalarizerPass(PassRegistry&);
|
|
void initializeScopedNoAliasAAWrapperPassPass(PassRegistry&);
|
|
void initializeSeparateConstOffsetFromGEPPass(PassRegistry&);
|
|
void initializeShadowStackGCLoweringPass(PassRegistry&);
|
|
void initializeShrinkWrapPass(PassRegistry&);
|
|
void initializeSimpleInlinerPass(PassRegistry&);
|
|
void initializeSimpleLoopUnswitchLegacyPassPass(PassRegistry&);
|
|
void initializeSingleLoopExtractorPass(PassRegistry&);
|
|
void initializeSinkingLegacyPassPass(PassRegistry&);
|
|
void initializeSjLjEHPreparePass(PassRegistry&);
|
|
void initializeSlotIndexesPass(PassRegistry&);
|
|
void initializeSpeculativeExecutionLegacyPassPass(PassRegistry&);
|
|
void initializeSpillPlacementPass(PassRegistry&);
|
|
void initializeStackColoringPass(PassRegistry&);
|
|
void initializeStackMapLivenessPass(PassRegistry&);
|
|
void initializeStackProtectorPass(PassRegistry&);
|
|
void initializeStackSlotColoringPass(PassRegistry&);
|
|
void initializeStraightLineStrengthReducePass(PassRegistry&);
|
|
void initializeStripDeadDebugInfoPass(PassRegistry&);
|
|
void initializeStripDeadPrototypesLegacyPassPass(PassRegistry&);
|
|
void initializeStripDebugDeclarePass(PassRegistry&);
|
|
void initializeStripGCRelocatesPass(PassRegistry&);
|
|
void initializeStripNonDebugSymbolsPass(PassRegistry&);
|
|
void initializeStripNonLineTableDebugInfoPass(PassRegistry&);
|
|
void initializeStripSymbolsPass(PassRegistry&);
|
|
void initializeStructurizeCFGPass(PassRegistry&);
|
|
void initializeTailCallElimPass(PassRegistry&);
|
|
void initializeTailDuplicatePassPass(PassRegistry&);
|
|
void initializeTargetLibraryInfoWrapperPassPass(PassRegistry&);
|
|
void initializeTargetPassConfigPass(PassRegistry&);
|
|
void initializeTargetTransformInfoWrapperPassPass(PassRegistry&);
|
|
void initializeThreadSanitizerPass(PassRegistry&);
|
|
void initializeTwoAddressInstructionPassPass(PassRegistry&);
|
|
void initializeTypeBasedAAWrapperPassPass(PassRegistry&);
|
|
void initializeUnifyFunctionExitNodesPass(PassRegistry&);
|
|
void initializeUnpackMachineBundlesPass(PassRegistry&);
|
|
void initializeUnreachableBlockElimLegacyPassPass(PassRegistry&);
|
|
void initializeUnreachableMachineBlockElimPass(PassRegistry&);
|
|
void initializeVerifierLegacyPassPass(PassRegistry&);
|
|
void initializeVirtRegMapPass(PassRegistry&);
|
|
void initializeVirtRegRewriterPass(PassRegistry&);
|
|
void initializeWholeProgramDevirtPass(PassRegistry&);
|
|
void initializeWinEHPreparePass(PassRegistry&);
|
|
void initializeWriteBitcodePassPass(PassRegistry&);
|
|
void initializeWriteThinLTOBitcodePass(PassRegistry&);
|
|
void initializeXRayInstrumentationPass(PassRegistry&);
|
|
}
|
|
|
|
#endif
|