1*9880d681SAndroid Build Coastguard Worker//===- PassRegistry.def - Registry of passes --------------------*- C++ -*-===// 2*9880d681SAndroid Build Coastguard Worker// 3*9880d681SAndroid Build Coastguard Worker// The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker// 5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker// 8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker// 10*9880d681SAndroid Build Coastguard Worker// This file is used as the registry of passes that are part of the core LLVM 11*9880d681SAndroid Build Coastguard Worker// libraries. This file describes both transformation passes and analyses 12*9880d681SAndroid Build Coastguard Worker// Analyses are registered while transformation passes have names registered 13*9880d681SAndroid Build Coastguard Worker// that can be used when providing a textual pass pipeline. 14*9880d681SAndroid Build Coastguard Worker// 15*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker// NOTE: NO INCLUDE GUARD DESIRED! 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker#ifndef MODULE_ANALYSIS 20*9880d681SAndroid Build Coastguard Worker#define MODULE_ANALYSIS(NAME, CREATE_PASS) 21*9880d681SAndroid Build Coastguard Worker#endif 22*9880d681SAndroid Build Coastguard WorkerMODULE_ANALYSIS("callgraph", CallGraphAnalysis()) 23*9880d681SAndroid Build Coastguard WorkerMODULE_ANALYSIS("lcg", LazyCallGraphAnalysis()) 24*9880d681SAndroid Build Coastguard WorkerMODULE_ANALYSIS("no-op-module", NoOpModuleAnalysis()) 25*9880d681SAndroid Build Coastguard WorkerMODULE_ANALYSIS("profile-summary", ProfileSummaryAnalysis()) 26*9880d681SAndroid Build Coastguard WorkerMODULE_ANALYSIS("targetlibinfo", TargetLibraryAnalysis()) 27*9880d681SAndroid Build Coastguard WorkerMODULE_ANALYSIS("verify", VerifierAnalysis()) 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker#ifndef MODULE_ALIAS_ANALYSIS 30*9880d681SAndroid Build Coastguard Worker#define MODULE_ALIAS_ANALYSIS(NAME, CREATE_PASS) \ 31*9880d681SAndroid Build Coastguard Worker MODULE_ANALYSIS(NAME, CREATE_PASS) 32*9880d681SAndroid Build Coastguard Worker#endif 33*9880d681SAndroid Build Coastguard WorkerMODULE_ALIAS_ANALYSIS("globals-aa", GlobalsAA()) 34*9880d681SAndroid Build Coastguard Worker#undef MODULE_ALIAS_ANALYSIS 35*9880d681SAndroid Build Coastguard Worker#undef MODULE_ANALYSIS 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker#ifndef MODULE_PASS 38*9880d681SAndroid Build Coastguard Worker#define MODULE_PASS(NAME, CREATE_PASS) 39*9880d681SAndroid Build Coastguard Worker#endif 40*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("constmerge", ConstantMergePass()) 41*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("cross-dso-cfi", CrossDSOCFIPass()) 42*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("deadargelim", DeadArgumentEliminationPass()) 43*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("elim-avail-extern", EliminateAvailableExternallyPass()) 44*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("forceattrs", ForceFunctionAttrsPass()) 45*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("globaldce", GlobalDCEPass()) 46*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("globalopt", GlobalOptPass()) 47*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("inferattrs", InferFunctionAttrsPass()) 48*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("insert-gcov-profiling", GCOVProfilerPass()) 49*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("instrprof", InstrProfiling()) 50*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("internalize", InternalizePass()) 51*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("invalidate<all>", InvalidateAllAnalysesPass()) 52*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("ipsccp", IPSCCPPass()) 53*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("lowertypetests", LowerTypeTestsPass()) 54*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("no-op-module", NoOpModulePass()) 55*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("partial-inliner", PartialInlinerPass()) 56*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("pgo-icall-prom", PGOIndirectCallPromotion()) 57*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("pgo-instr-gen", PGOInstrumentationGen()) 58*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("pgo-instr-use", PGOInstrumentationUse()) 59*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("pre-isel-intrinsic-lowering", PreISelIntrinsicLoweringPass()) 60*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("print-profile-summary", ProfileSummaryPrinterPass(dbgs())) 61*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("print-callgraph", CallGraphPrinterPass(dbgs())) 62*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("print", PrintModulePass(dbgs())) 63*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("print-lcg", LazyCallGraphPrinterPass(dbgs())) 64*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("print-lcg-dot", LazyCallGraphDOTPrinterPass(dbgs())) 65*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("rpo-functionattrs", ReversePostOrderFunctionAttrsPass()) 66*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("sample-profile", SampleProfileLoaderPass()) 67*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("strip-dead-prototypes", StripDeadPrototypesPass()) 68*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("wholeprogramdevirt", WholeProgramDevirtPass()) 69*9880d681SAndroid Build Coastguard WorkerMODULE_PASS("verify", VerifierPass()) 70*9880d681SAndroid Build Coastguard Worker#undef MODULE_PASS 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Worker#ifndef CGSCC_ANALYSIS 73*9880d681SAndroid Build Coastguard Worker#define CGSCC_ANALYSIS(NAME, CREATE_PASS) 74*9880d681SAndroid Build Coastguard Worker#endif 75*9880d681SAndroid Build Coastguard WorkerCGSCC_ANALYSIS("no-op-cgscc", NoOpCGSCCAnalysis()) 76*9880d681SAndroid Build Coastguard Worker#undef CGSCC_ANALYSIS 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker#ifndef CGSCC_PASS 79*9880d681SAndroid Build Coastguard Worker#define CGSCC_PASS(NAME, CREATE_PASS) 80*9880d681SAndroid Build Coastguard Worker#endif 81*9880d681SAndroid Build Coastguard WorkerCGSCC_PASS("invalidate<all>", InvalidateAllAnalysesPass()) 82*9880d681SAndroid Build Coastguard WorkerCGSCC_PASS("function-attrs", PostOrderFunctionAttrsPass()) 83*9880d681SAndroid Build Coastguard WorkerCGSCC_PASS("no-op-cgscc", NoOpCGSCCPass()) 84*9880d681SAndroid Build Coastguard Worker#undef CGSCC_PASS 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Worker#ifndef FUNCTION_ANALYSIS 87*9880d681SAndroid Build Coastguard Worker#define FUNCTION_ANALYSIS(NAME, CREATE_PASS) 88*9880d681SAndroid Build Coastguard Worker#endif 89*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("aa", AAManager()) 90*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("assumptions", AssumptionAnalysis()) 91*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("block-freq", BlockFrequencyAnalysis()) 92*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("branch-prob", BranchProbabilityAnalysis()) 93*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("domtree", DominatorTreeAnalysis()) 94*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("postdomtree", PostDominatorTreeAnalysis()) 95*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("demanded-bits", DemandedBitsAnalysis()) 96*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("domfrontier", DominanceFrontierAnalysis()) 97*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("loops", LoopAnalysis()) 98*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("lazy-value-info", LazyValueAnalysis()) 99*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("da", DependenceAnalysis()) 100*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("memdep", MemoryDependenceAnalysis()) 101*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("memoryssa", MemorySSAAnalysis()) 102*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("regions", RegionInfoAnalysis()) 103*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("no-op-function", NoOpFunctionAnalysis()) 104*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("scalar-evolution", ScalarEvolutionAnalysis()) 105*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("targetlibinfo", TargetLibraryAnalysis()) 106*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("targetir", 107*9880d681SAndroid Build Coastguard Worker TM ? TM->getTargetIRAnalysis() : TargetIRAnalysis()) 108*9880d681SAndroid Build Coastguard WorkerFUNCTION_ANALYSIS("verify", VerifierAnalysis()) 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Worker#ifndef FUNCTION_ALIAS_ANALYSIS 111*9880d681SAndroid Build Coastguard Worker#define FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) \ 112*9880d681SAndroid Build Coastguard Worker FUNCTION_ANALYSIS(NAME, CREATE_PASS) 113*9880d681SAndroid Build Coastguard Worker#endif 114*9880d681SAndroid Build Coastguard WorkerFUNCTION_ALIAS_ANALYSIS("basic-aa", BasicAA()) 115*9880d681SAndroid Build Coastguard WorkerFUNCTION_ALIAS_ANALYSIS("cfl-anders-aa", CFLAndersAA()) 116*9880d681SAndroid Build Coastguard WorkerFUNCTION_ALIAS_ANALYSIS("cfl-steens-aa", CFLSteensAA()) 117*9880d681SAndroid Build Coastguard WorkerFUNCTION_ALIAS_ANALYSIS("scev-aa", SCEVAA()) 118*9880d681SAndroid Build Coastguard WorkerFUNCTION_ALIAS_ANALYSIS("scoped-noalias-aa", ScopedNoAliasAA()) 119*9880d681SAndroid Build Coastguard WorkerFUNCTION_ALIAS_ANALYSIS("type-based-aa", TypeBasedAA()) 120*9880d681SAndroid Build Coastguard Worker#undef FUNCTION_ALIAS_ANALYSIS 121*9880d681SAndroid Build Coastguard Worker#undef FUNCTION_ANALYSIS 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker#ifndef FUNCTION_PASS 124*9880d681SAndroid Build Coastguard Worker#define FUNCTION_PASS(NAME, CREATE_PASS) 125*9880d681SAndroid Build Coastguard Worker#endif 126*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("aa-eval", AAEvaluator()) 127*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("adce", ADCEPass()) 128*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("add-discriminators", AddDiscriminatorsPass()) 129*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("alignment-from-assumptions", AlignmentFromAssumptionsPass()) 130*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("bdce", BDCEPass()) 131*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("consthoist", ConstantHoistingPass()) 132*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("correlated-propagation", CorrelatedValuePropagationPass()) 133*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("dce", DCEPass()) 134*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("dse", DSEPass()) 135*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("early-cse", EarlyCSEPass()) 136*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("instcombine", InstCombinePass()) 137*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("instsimplify", InstSimplifierPass()) 138*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("invalidate<all>", InvalidateAllAnalysesPass()) 139*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("float2int", Float2IntPass()) 140*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("no-op-function", NoOpFunctionPass()) 141*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("loweratomic", LowerAtomicPass()) 142*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("lower-expect", LowerExpectIntrinsicPass()) 143*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("guard-widening", GuardWideningPass()) 144*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("gvn", GVN()) 145*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("loop-simplify", LoopSimplifyPass()) 146*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("mem2reg", PromotePass()) 147*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("memcpyopt", MemCpyOptPass()) 148*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("mldst-motion", MergedLoadStoreMotionPass()) 149*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("jump-threading", JumpThreadingPass()) 150*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("partially-inline-libcalls", PartiallyInlineLibCallsPass()) 151*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("lcssa", LCSSAPass()) 152*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("loop-vectorize", LoopVectorizePass()) 153*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print", PrintFunctionPass(dbgs())) 154*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<assumptions>", AssumptionPrinterPass(dbgs())) 155*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<block-freq>", BlockFrequencyPrinterPass(dbgs())) 156*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<branch-prob>", BranchProbabilityPrinterPass(dbgs())) 157*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<domtree>", DominatorTreePrinterPass(dbgs())) 158*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<postdomtree>", PostDominatorTreePrinterPass(dbgs())) 159*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<demanded-bits>", DemandedBitsPrinterPass(dbgs())) 160*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<domfrontier>", DominanceFrontierPrinterPass(dbgs())) 161*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<loops>", LoopPrinterPass(dbgs())) 162*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<memoryssa>", MemorySSAPrinterPass(dbgs())) 163*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<regions>", RegionInfoPrinterPass(dbgs())) 164*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("print<scalar-evolution>", ScalarEvolutionPrinterPass(dbgs())) 165*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("reassociate", ReassociatePass()) 166*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("sccp", SCCPPass()) 167*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("simplify-cfg", SimplifyCFGPass()) 168*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("sink", SinkingPass()) 169*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("slp-vectorizer", SLPVectorizerPass()) 170*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("sroa", SROA()) 171*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("tailcallelim", TailCallElimPass()) 172*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("unreachableblockelim", UnreachableBlockElimPass()) 173*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("verify", VerifierPass()) 174*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("verify<domtree>", DominatorTreeVerifierPass()) 175*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("verify<memoryssa>", MemorySSAVerifierPass()) 176*9880d681SAndroid Build Coastguard WorkerFUNCTION_PASS("verify<regions>", RegionInfoVerifierPass()) 177*9880d681SAndroid Build Coastguard Worker#undef FUNCTION_PASS 178*9880d681SAndroid Build Coastguard Worker 179*9880d681SAndroid Build Coastguard Worker#ifndef LOOP_ANALYSIS 180*9880d681SAndroid Build Coastguard Worker#define LOOP_ANALYSIS(NAME, CREATE_PASS) 181*9880d681SAndroid Build Coastguard Worker#endif 182*9880d681SAndroid Build Coastguard WorkerLOOP_ANALYSIS("no-op-loop", NoOpLoopAnalysis()) 183*9880d681SAndroid Build Coastguard WorkerLOOP_ANALYSIS("access-info", LoopAccessAnalysis()) 184*9880d681SAndroid Build Coastguard Worker#undef LOOP_ANALYSIS 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Worker#ifndef LOOP_PASS 187*9880d681SAndroid Build Coastguard Worker#define LOOP_PASS(NAME, CREATE_PASS) 188*9880d681SAndroid Build Coastguard Worker#endif 189*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("invalidate<all>", InvalidateAllAnalysesPass()) 190*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("licm", LICMPass()) 191*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("loop-idiom", LoopIdiomRecognizePass()) 192*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("rotate", LoopRotatePass()) 193*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("no-op-loop", NoOpLoopPass()) 194*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("print", PrintLoopPass(dbgs())) 195*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("loop-deletion", LoopDeletionPass()) 196*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("simplify-cfg", LoopSimplifyCFGPass()) 197*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("indvars", IndVarSimplifyPass()) 198*9880d681SAndroid Build Coastguard WorkerLOOP_PASS("print-access-info", LoopAccessInfoPrinterPass(dbgs())) 199*9880d681SAndroid Build Coastguard Worker#undef LOOP_PASS 200