blob: 771d2f5b212ae9cf1eec0dc1aa1dbaa6109bc652 [file] [log] [blame]
Chandler Carrutha21cd042014-04-21 08:08:50 +00001//===- PassRegistry.def - Registry of passes --------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file is used as the registry of passes that are part of the core LLVM
11// libraries. This file describes both transformation passes and analyses
12// Analyses are registered while transformation passes have names registered
13// that can be used when providing a textual pass pipeline.
14//
15//===----------------------------------------------------------------------===//
16
17// NOTE: NO INCLUDE GUARD DESIRED!
18
Chandler Carruth4d3682b2014-04-21 08:20:10 +000019#ifndef MODULE_ANALYSIS
20#define MODULE_ANALYSIS(NAME, CREATE_PASS)
21#endif
Chandler Carruthf1b2c7b2016-03-10 11:24:11 +000022MODULE_ANALYSIS("callgraph", CallGraphAnalysis())
Chandler Carruth4d3682b2014-04-21 08:20:10 +000023MODULE_ANALYSIS("lcg", LazyCallGraphAnalysis())
Teresa Johnson3143f332016-08-12 13:53:02 +000024MODULE_ANALYSIS("module-summary", ModuleSummaryIndexAnalysis())
Chandler Carruth5b12a2f2015-01-06 02:50:06 +000025MODULE_ANALYSIS("no-op-module", NoOpModuleAnalysis())
Easwaran Raman7ef349f2016-06-03 22:54:26 +000026MODULE_ANALYSIS("profile-summary", ProfileSummaryAnalysis())
Vitaly Buka54b4ae72018-11-26 23:05:48 +000027MODULE_ANALYSIS("stack-safety", StackSafetyGlobalAnalysis())
Chandler Carruthe2ffd022015-01-15 11:39:46 +000028MODULE_ANALYSIS("targetlibinfo", TargetLibraryAnalysis())
Adrian Prantlf68fb382016-05-09 19:57:29 +000029MODULE_ANALYSIS("verify", VerifierAnalysis())
Fedor Sergeeve6959a62018-09-20 17:08:45 +000030MODULE_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis(PIC))
Chandler Carruthf51faf02016-03-11 09:15:11 +000031
32#ifndef MODULE_ALIAS_ANALYSIS
George Burgess IV3b5b98a2016-07-06 00:26:41 +000033#define MODULE_ALIAS_ANALYSIS(NAME, CREATE_PASS) \
Chandler Carruthf51faf02016-03-11 09:15:11 +000034 MODULE_ANALYSIS(NAME, CREATE_PASS)
35#endif
36MODULE_ALIAS_ANALYSIS("globals-aa", GlobalsAA())
37#undef MODULE_ALIAS_ANALYSIS
Chandler Carruth4d3682b2014-04-21 08:20:10 +000038#undef MODULE_ANALYSIS
39
Chandler Carrutha21cd042014-04-21 08:08:50 +000040#ifndef MODULE_PASS
41#define MODULE_PASS(NAME, CREATE_PASS)
42#endif
Chandler Carruthb699f7b2016-08-17 02:56:20 +000043MODULE_PASS("always-inline", AlwaysInlinerPass())
Matthew Simpson7d6a3b62017-10-25 13:40:08 +000044MODULE_PASS("called-value-propagation", CalledValuePropagationPass())
Teresa Johnson1f630242019-01-04 19:04:54 +000045MODULE_PASS("canonicalize-aliases", CanonicalizeAliasesPass())
Michael J. Spencer3da6ce52018-07-16 00:28:24 +000046MODULE_PASS("cg-profile", CGProfilePass())
Davide Italiano0a517712016-05-05 00:51:09 +000047MODULE_PASS("constmerge", ConstantMergePass())
Davide Italiano0dd611b2016-07-09 03:25:35 +000048MODULE_PASS("cross-dso-cfi", CrossDSOCFIPass())
Sean Silva466d0a32016-06-12 09:16:39 +000049MODULE_PASS("deadargelim", DeadArgumentEliminationPass())
Davide Italianoe44aed72016-05-05 02:37:32 +000050MODULE_PASS("elim-avail-extern", EliminateAvailableExternallyPass())
Chandler Carruth6a1ce8e2015-12-27 08:13:45 +000051MODULE_PASS("forceattrs", ForceFunctionAttrsPass())
Teresa Johnson385d7062016-07-18 21:22:24 +000052MODULE_PASS("function-import", FunctionImportPass())
Davide Italiano82cad6f2016-05-03 19:39:15 +000053MODULE_PASS("globaldce", GlobalDCEPass())
Justin Bogner1a9ed302016-04-26 00:28:01 +000054MODULE_PASS("globalopt", GlobalOptPass())
Davide Italiano02ca2cb2016-11-21 00:28:23 +000055MODULE_PASS("globalsplit", GlobalSplitPass())
Aditya Kumarf7ae0df2018-10-03 05:55:20 +000056MODULE_PASS("hotcoldsplit", HotColdSplittingPass())
Chandler Carruthd9796422015-12-27 08:41:34 +000057MODULE_PASS("inferattrs", InferFunctionAttrsPass())
Xinliang David Li6b283332016-06-05 05:12:23 +000058MODULE_PASS("insert-gcov-profiling", GCOVProfilerPass())
Xinliang David Li6be977a2016-04-18 17:47:38 +000059MODULE_PASS("instrprof", InstrProfiling())
Xinliang David Licb8e2c72016-06-05 05:15:45 +000060MODULE_PASS("internalize", InternalizePass())
Chandler Carruth0df89052015-01-06 09:06:35 +000061MODULE_PASS("invalidate<all>", InvalidateAllAnalysesPass())
Davide Italiano2d1483c2016-05-05 21:05:36 +000062MODULE_PASS("ipsccp", IPSCCPPass())
Teresa Johnson2a478d42018-07-19 14:51:32 +000063MODULE_PASS("lowertypetests", LowerTypeTestsPass(nullptr, nullptr))
Mehdi Aminif15b3af2016-09-16 17:18:16 +000064MODULE_PASS("name-anon-globals", NameAnonGlobalPass())
Chandler Carruth2e306ca2015-01-06 02:37:55 +000065MODULE_PASS("no-op-module", NoOpModulePass())
Easwaran Raman78b1ab72016-06-27 16:50:18 +000066MODULE_PASS("partial-inliner", PartialInlinerPass())
Xinliang David Li61ce2772016-05-16 16:31:07 +000067MODULE_PASS("pgo-icall-prom", PGOIndirectCallPromotion())
Xinliang David Liea2fb7d2016-05-06 05:49:19 +000068MODULE_PASS("pgo-instr-gen", PGOInstrumentationGen())
Xinliang David Lie052ee92016-05-10 21:59:52 +000069MODULE_PASS("pgo-instr-use", PGOInstrumentationUse())
Michael Kupersteinf3f8fc62016-06-24 20:13:42 +000070MODULE_PASS("pre-isel-intrinsic-lowering", PreISelIntrinsicLoweringPass())
Easwaran Raman7ef349f2016-06-03 22:54:26 +000071MODULE_PASS("print-profile-summary", ProfileSummaryPrinterPass(dbgs()))
Easwaran Ramanb920b272016-06-03 21:14:26 +000072MODULE_PASS("print-callgraph", CallGraphPrinterPass(dbgs()))
Easwaran Raman7ef349f2016-06-03 22:54:26 +000073MODULE_PASS("print", PrintModulePass(dbgs()))
Chandler Carruthc9fd7652016-03-10 11:24:06 +000074MODULE_PASS("print-lcg", LazyCallGraphPrinterPass(dbgs()))
Sean Silva5e494bc2016-06-18 09:17:32 +000075MODULE_PASS("print-lcg-dot", LazyCallGraphDOTPrinterPass(dbgs()))
Vitaly Buka54b4ae72018-11-26 23:05:48 +000076MODULE_PASS("print-stack-safety", StackSafetyGlobalPrinterPass(dbgs()))
Fedor Sergeevf1b0fdf2017-12-15 09:32:11 +000077MODULE_PASS("rewrite-statepoints-for-gc", RewriteStatepointsForGC())
Michael Kupersteinb3391842016-07-25 20:52:00 +000078MODULE_PASS("rewrite-symbols", RewriteSymbolPass())
Sean Silvacc691dd2016-06-12 07:48:51 +000079MODULE_PASS("rpo-functionattrs", ReversePostOrderFunctionAttrsPass())
Xinliang David Libc6df7a2016-05-27 23:20:16 +000080MODULE_PASS("sample-profile", SampleProfileLoaderPass())
Justin Bognere39e3a42015-10-30 23:28:12 +000081MODULE_PASS("strip-dead-prototypes", StripDeadPrototypesPass())
Easwaran Raman283d9782018-01-09 19:39:35 +000082MODULE_PASS("synthetic-counts-propagation", SyntheticCountsPropagation())
Teresa Johnson2a478d42018-07-19 14:51:32 +000083MODULE_PASS("wholeprogramdevirt", WholeProgramDevirtPass(nullptr, nullptr))
Chandler Carruth51fa09d2015-01-05 00:08:53 +000084MODULE_PASS("verify", VerifierPass())
Chandler Carrutha21cd042014-04-21 08:08:50 +000085#undef MODULE_PASS
86
Chandler Carruth57418d82014-04-21 11:12:00 +000087#ifndef CGSCC_ANALYSIS
88#define CGSCC_ANALYSIS(NAME, CREATE_PASS)
89#endif
Chandler Carruth5b12a2f2015-01-06 02:50:06 +000090CGSCC_ANALYSIS("no-op-cgscc", NoOpCGSCCAnalysis())
Chandler Carruth8bf27802016-12-10 06:34:44 +000091CGSCC_ANALYSIS("fam-proxy", FunctionAnalysisManagerCGSCCProxy())
Fedor Sergeeve6959a62018-09-20 17:08:45 +000092CGSCC_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis(PIC))
Chandler Carruth57418d82014-04-21 11:12:00 +000093#undef CGSCC_ANALYSIS
94
95#ifndef CGSCC_PASS
96#define CGSCC_PASS(NAME, CREATE_PASS)
97#endif
Chandler Carruth1648cea2017-02-09 23:46:27 +000098CGSCC_PASS("argpromotion", ArgumentPromotionPass())
Chandler Carruth0df89052015-01-06 09:06:35 +000099CGSCC_PASS("invalidate<all>", InvalidateAllAnalysesPass())
Chandler Carruthe9afeb02016-02-18 11:03:11 +0000100CGSCC_PASS("function-attrs", PostOrderFunctionAttrsPass())
Chandler Carruth54cffa12016-12-20 03:15:32 +0000101CGSCC_PASS("inline", InlinerPass())
Chandler Carruth2e306ca2015-01-06 02:37:55 +0000102CGSCC_PASS("no-op-cgscc", NoOpCGSCCPass())
Chandler Carruth57418d82014-04-21 11:12:00 +0000103#undef CGSCC_PASS
104
Chandler Carruth4d3682b2014-04-21 08:20:10 +0000105#ifndef FUNCTION_ANALYSIS
106#define FUNCTION_ANALYSIS(NAME, CREATE_PASS)
107#endif
Chandler Carruth26bf6ea2016-02-13 23:32:00 +0000108FUNCTION_ANALYSIS("aa", AAManager())
Daniel Jasper8de3a542016-12-19 08:22:17 +0000109FUNCTION_ANALYSIS("assumptions", AssumptionAnalysis())
Xinliang David Lida713ca2016-05-05 21:13:27 +0000110FUNCTION_ANALYSIS("block-freq", BlockFrequencyAnalysis())
Xinliang David Li454f7fa2016-05-05 02:59:57 +0000111FUNCTION_ANALYSIS("branch-prob", BranchProbabilityAnalysis())
Chandler Carruth8c3a02f2015-01-14 10:19:28 +0000112FUNCTION_ANALYSIS("domtree", DominatorTreeAnalysis())
Hongbin Zheng5d7472e2016-02-25 17:54:07 +0000113FUNCTION_ANALYSIS("postdomtree", PostDominatorTreeAnalysis())
Michael Kuperstein3445cc72016-04-18 23:55:01 +0000114FUNCTION_ANALYSIS("demanded-bits", DemandedBitsAnalysis())
Hongbin Zheng15969222016-02-25 17:54:15 +0000115FUNCTION_ANALYSIS("domfrontier", DominanceFrontierAnalysis())
Chandler Carrutha3751202015-01-20 10:58:50 +0000116FUNCTION_ANALYSIS("loops", LoopAnalysis())
Sean Silva9ce41c32016-06-13 22:01:25 +0000117FUNCTION_ANALYSIS("lazy-value-info", LazyValueAnalysis())
Chandler Carruthb6b8f762016-05-12 22:19:39 +0000118FUNCTION_ANALYSIS("da", DependenceAnalysis())
Chandler Carruthc5266b52016-03-10 00:55:30 +0000119FUNCTION_ANALYSIS("memdep", MemoryDependenceAnalysis())
Geoff Berry783607f2016-06-01 21:30:40 +0000120FUNCTION_ANALYSIS("memoryssa", MemorySSAAnalysis())
John Brawn106ffb92018-06-28 14:13:06 +0000121FUNCTION_ANALYSIS("phi-values", PhiValuesAnalysis())
Hongbin Zhengedc89ca2016-02-25 17:54:25 +0000122FUNCTION_ANALYSIS("regions", RegionInfoAnalysis())
Chandler Carruth5b12a2f2015-01-06 02:50:06 +0000123FUNCTION_ANALYSIS("no-op-function", NoOpFunctionAnalysis())
Adam Nemetc7b8b5e2016-07-18 16:29:21 +0000124FUNCTION_ANALYSIS("opt-remark-emit", OptimizationRemarkEmitterAnalysis())
Chandler Carruthbfe1f1c2015-08-17 02:08:17 +0000125FUNCTION_ANALYSIS("scalar-evolution", ScalarEvolutionAnalysis())
Vitaly Bukac29e36f2018-11-26 21:57:47 +0000126FUNCTION_ANALYSIS("stack-safety-local", StackSafetyAnalysis())
Chandler Carruth6f409cb2015-01-24 02:06:09 +0000127FUNCTION_ANALYSIS("targetlibinfo", TargetLibraryAnalysis())
Chandler Carruth7724e8e2015-02-01 10:11:22 +0000128FUNCTION_ANALYSIS("targetir",
129 TM ? TM->getTargetIRAnalysis() : TargetIRAnalysis())
Adrian Prantlf68fb382016-05-09 19:57:29 +0000130FUNCTION_ANALYSIS("verify", VerifierAnalysis())
Fedor Sergeeve6959a62018-09-20 17:08:45 +0000131FUNCTION_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis(PIC))
Chandler Carruth67a41f02016-02-18 09:45:17 +0000132
133#ifndef FUNCTION_ALIAS_ANALYSIS
134#define FUNCTION_ALIAS_ANALYSIS(NAME, CREATE_PASS) \
135 FUNCTION_ANALYSIS(NAME, CREATE_PASS)
136#endif
137FUNCTION_ALIAS_ANALYSIS("basic-aa", BasicAA())
George Burgess IV3b5b98a2016-07-06 00:26:41 +0000138FUNCTION_ALIAS_ANALYSIS("cfl-anders-aa", CFLAndersAA())
139FUNCTION_ALIAS_ANALYSIS("cfl-steens-aa", CFLSteensAA())
Chandler Carruth10ab5d92016-02-20 04:01:45 +0000140FUNCTION_ALIAS_ANALYSIS("scev-aa", SCEVAA())
Chandler Carruth580e4662016-02-20 04:03:06 +0000141FUNCTION_ALIAS_ANALYSIS("scoped-noalias-aa", ScopedNoAliasAA())
Chandler Carruth3b194092016-02-20 04:04:52 +0000142FUNCTION_ALIAS_ANALYSIS("type-based-aa", TypeBasedAA())
Chandler Carruth67a41f02016-02-18 09:45:17 +0000143#undef FUNCTION_ALIAS_ANALYSIS
Chandler Carruth4d3682b2014-04-21 08:20:10 +0000144#undef FUNCTION_ANALYSIS
145
Chandler Carrutha21cd042014-04-21 08:08:50 +0000146#ifndef FUNCTION_PASS
147#define FUNCTION_PASS(NAME, CREATE_PASS)
148#endif
Chandler Carruth89a08aa2016-02-20 03:46:03 +0000149FUNCTION_PASS("aa-eval", AAEvaluator())
Justin Bogneraf019982015-10-30 23:13:18 +0000150FUNCTION_PASS("adce", ADCEPass())
Xinliang David Li438355c2016-06-15 21:51:30 +0000151FUNCTION_PASS("add-discriminators", AddDiscriminatorsPass())
Amjad Aboudc6483fb2018-01-25 12:06:32 +0000152FUNCTION_PASS("aggressive-instcombine", AggressiveInstCombinePass())
Sean Silva570b29d2016-06-15 06:18:01 +0000153FUNCTION_PASS("alignment-from-assumptions", AlignmentFromAssumptionsPass())
Davide Italianoabf016e2016-05-25 01:57:04 +0000154FUNCTION_PASS("bdce", BDCEPass())
Chandler Carruth8dd352a2017-11-14 01:30:04 +0000155FUNCTION_PASS("bounds-checking", BoundsCheckingPass())
Wei Mia6c7a032016-07-22 18:04:25 +0000156FUNCTION_PASS("break-crit-edges", BreakCriticalEdgesPass())
Jun Bum Limf4beb752017-11-03 20:41:16 +0000157FUNCTION_PASS("callsite-splitting", CallSiteSplittingPass())
Michael Kuperstein3fae04d2016-07-02 00:16:47 +0000158FUNCTION_PASS("consthoist", ConstantHoistingPass())
Hiroshi Yamauchic38c8502018-09-04 17:19:13 +0000159FUNCTION_PASS("chr", ControlHeightReductionPass())
Sean Silva9afbd6f2016-07-06 23:26:29 +0000160FUNCTION_PASS("correlated-propagation", CorrelatedValuePropagationPass())
Justin Bogner04d28142016-04-22 19:40:41 +0000161FUNCTION_PASS("dce", DCEPass())
Sanjay Patel193e8982017-09-09 13:38:18 +0000162FUNCTION_PASS("div-rem-pairs", DivRemPairsPass())
Justin Bogner9c81a3f2016-05-17 21:38:13 +0000163FUNCTION_PASS("dse", DSEPass())
Sean Fertile551913f2018-06-29 17:48:58 +0000164FUNCTION_PASS("dot-cfg", CFGPrinterPass())
165FUNCTION_PASS("dot-cfg-only", CFGOnlyPrinterPass())
Geoff Berryaa612092016-08-31 19:24:10 +0000166FUNCTION_PASS("early-cse", EarlyCSEPass(/*UseMemorySSA=*/false))
167FUNCTION_PASS("early-cse-memssa", EarlyCSEPass(/*UseMemorySSA=*/true))
Hans Wennborg5765d842017-11-14 21:09:45 +0000168FUNCTION_PASS("ee-instrument", EntryExitInstrumenterPass(/*PostInlining=*/false))
Max Kazantsevc05ba542018-12-07 14:39:46 +0000169FUNCTION_PASS("make-guards-explicit", MakeGuardsExplicitPass())
Hans Wennborg5765d842017-11-14 21:09:45 +0000170FUNCTION_PASS("post-inline-ee-instrument", EntryExitInstrumenterPass(/*PostInlining=*/true))
Sebastian Pop9c2e9dc2016-07-15 13:45:20 +0000171FUNCTION_PASS("gvn-hoist", GVNHoistPass())
Chandler Carruth7a98df72015-01-24 04:19:17 +0000172FUNCTION_PASS("instcombine", InstCombinePass())
Chandler Carruthb2b950d2018-06-29 23:36:03 +0000173FUNCTION_PASS("instsimplify", InstSimplifyPass())
Chandler Carruth0df89052015-01-06 09:06:35 +0000174FUNCTION_PASS("invalidate<all>", InvalidateAllAnalysesPass())
Michael Kuperstein840a0dd2016-06-24 23:32:02 +0000175FUNCTION_PASS("float2int", Float2IntPass())
Chandler Carruth2e306ca2015-01-06 02:37:55 +0000176FUNCTION_PASS("no-op-function", NoOpFunctionPass())
Rong Xufe89a6b2016-10-18 21:36:27 +0000177FUNCTION_PASS("libcalls-shrinkwrap", LibCallsShrinkWrapPass())
Davide Italiano74309892016-05-13 22:52:35 +0000178FUNCTION_PASS("loweratomic", LowerAtomicPass())
Chandler Carruthd4f6d112015-01-24 11:13:02 +0000179FUNCTION_PASS("lower-expect", LowerExpectIntrinsicPass())
Michael Kuperstein093715a2016-07-28 22:08:41 +0000180FUNCTION_PASS("lower-guard-intrinsic", LowerGuardIntrinsicPass())
Sanjoy Das0266d5e2016-05-18 22:55:34 +0000181FUNCTION_PASS("guard-widening", GuardWideningPass())
Chandler Carruthdd15ed02016-03-11 08:50:55 +0000182FUNCTION_PASS("gvn", GVN())
Markus Lavinb2bc0c52018-12-07 08:23:37 +0000183FUNCTION_PASS("load-store-vectorizer", LoadStoreVectorizerPass())
Davide Italianofff81b22016-07-09 03:03:01 +0000184FUNCTION_PASS("loop-simplify", LoopSimplifyPass())
Chandler Carruth017c62c2017-01-20 08:42:19 +0000185FUNCTION_PASS("loop-sink", LoopSinkPass())
Michael Kuperstein69f04072016-08-12 17:28:27 +0000186FUNCTION_PASS("lowerinvoke", LowerInvokePass())
Davide Italiano84645e02016-06-14 03:22:22 +0000187FUNCTION_PASS("mem2reg", PromotePass())
Sean Silvacf989e52016-06-14 02:44:55 +0000188FUNCTION_PASS("memcpyopt", MemCpyOptPass())
Davide Italianoe92bed32016-06-17 19:10:09 +0000189FUNCTION_PASS("mldst-motion", MergedLoadStoreMotionPass())
Wei Mi3a4fa312016-07-21 22:28:52 +0000190FUNCTION_PASS("nary-reassociate", NaryReassociatePass())
Davide Italianoee1439d2016-12-22 16:35:02 +0000191FUNCTION_PASS("newgvn", NewGVNPass())
Sean Silva9897e752016-06-14 00:51:09 +0000192FUNCTION_PASS("jump-threading", JumpThreadingPass())
Davide Italiano613d8072016-05-25 23:38:53 +0000193FUNCTION_PASS("partially-inline-libcalls", PartiallyInlineLibCallsPass())
Easwaran Raman33933df2016-06-09 19:44:46 +0000194FUNCTION_PASS("lcssa", LCSSAPass())
Teresa Johnsonf970c6e2016-08-13 04:11:27 +0000195FUNCTION_PASS("loop-data-prefetch", LoopDataPrefetchPass())
Chandler Carruth90fe7e72017-01-27 01:32:26 +0000196FUNCTION_PASS("loop-load-elim", LoopLoadEliminationPass())
Adam Nemet9b7ecbe2016-07-18 16:29:27 +0000197FUNCTION_PASS("loop-distribute", LoopDistributePass())
Sean Silva89419a62016-07-09 22:56:50 +0000198FUNCTION_PASS("loop-vectorize", LoopVectorizePass())
Rong Xu9e52f8e2017-04-04 16:42:20 +0000199FUNCTION_PASS("pgo-memop-opt", PGOMemOPSizeOpt())
Chandler Carrutha21cd042014-04-21 08:08:50 +0000200FUNCTION_PASS("print", PrintFunctionPass(dbgs()))
Daniel Jasper8de3a542016-12-19 08:22:17 +0000201FUNCTION_PASS("print<assumptions>", AssumptionPrinterPass(dbgs()))
Xinliang David Lida713ca2016-05-05 21:13:27 +0000202FUNCTION_PASS("print<block-freq>", BlockFrequencyPrinterPass(dbgs()))
Xinliang David Li454f7fa2016-05-05 02:59:57 +0000203FUNCTION_PASS("print<branch-prob>", BranchProbabilityPrinterPass(dbgs()))
Philip Pfaffed7b73192019-01-08 14:06:58 +0000204FUNCTION_PASS("print<da>", DependenceAnalysisPrinterPass(dbgs()))
Chandler Carruth8c3a02f2015-01-14 10:19:28 +0000205FUNCTION_PASS("print<domtree>", DominatorTreePrinterPass(dbgs()))
Hongbin Zheng5d7472e2016-02-25 17:54:07 +0000206FUNCTION_PASS("print<postdomtree>", PostDominatorTreePrinterPass(dbgs()))
Michael Kuperstein3445cc72016-04-18 23:55:01 +0000207FUNCTION_PASS("print<demanded-bits>", DemandedBitsPrinterPass(dbgs()))
Hongbin Zheng15969222016-02-25 17:54:15 +0000208FUNCTION_PASS("print<domfrontier>", DominanceFrontierPrinterPass(dbgs()))
Chandler Carrutha3751202015-01-20 10:58:50 +0000209FUNCTION_PASS("print<loops>", LoopPrinterPass(dbgs()))
Geoff Berry783607f2016-06-01 21:30:40 +0000210FUNCTION_PASS("print<memoryssa>", MemorySSAPrinterPass(dbgs()))
John Brawn106ffb92018-06-28 14:13:06 +0000211FUNCTION_PASS("print<phi-values>", PhiValuesPrinterPass(dbgs()))
Hongbin Zhengedc89ca2016-02-25 17:54:25 +0000212FUNCTION_PASS("print<regions>", RegionInfoPrinterPass(dbgs()))
Chandler Carruthbfe1f1c2015-08-17 02:08:17 +0000213FUNCTION_PASS("print<scalar-evolution>", ScalarEvolutionPrinterPass(dbgs()))
Vitaly Bukac29e36f2018-11-26 21:57:47 +0000214FUNCTION_PASS("print<stack-safety-local>", StackSafetyPrinterPass(dbgs()))
Justin Bognerc943cfa2016-04-26 23:39:29 +0000215FUNCTION_PASS("reassociate", ReassociatePass())
Mikael Holmencdf701a2018-11-21 14:00:17 +0000216FUNCTION_PASS("scalarizer", ScalarizerPass())
Davide Italianod77d4c02016-05-18 15:18:25 +0000217FUNCTION_PASS("sccp", SCCPPass())
Chandler Carruth9a941b22015-02-01 11:34:21 +0000218FUNCTION_PASS("simplify-cfg", SimplifyCFGPass())
Justin Bogner9d0b7e92016-04-22 19:54:10 +0000219FUNCTION_PASS("sink", SinkingPass())
Sean Silva8847c182016-06-15 08:43:40 +0000220FUNCTION_PASS("slp-vectorizer", SLPVectorizerPass())
Michael Kuperstein3a6d4372016-08-01 21:48:33 +0000221FUNCTION_PASS("speculative-execution", SpeculativeExecutionPass())
Chandler Carruth6efdd0f2017-11-28 11:32:31 +0000222FUNCTION_PASS("spec-phis", SpeculateAroundPHIsPass())
Chandler Carruthe73e5b42015-09-12 09:09:14 +0000223FUNCTION_PASS("sroa", SROA())
Sean Silvaf79d9782016-07-06 23:48:41 +0000224FUNCTION_PASS("tailcallelim", TailCallElimPass())
Wei Mi302c35d2016-07-08 03:32:49 +0000225FUNCTION_PASS("unreachableblockelim", UnreachableBlockElimPass())
Chandler Carruth51fa09d2015-01-05 00:08:53 +0000226FUNCTION_PASS("verify", VerifierPass())
Chandler Carruth8c3a02f2015-01-14 10:19:28 +0000227FUNCTION_PASS("verify<domtree>", DominatorTreeVerifierPass())
Sean Silvad8c90ea2016-07-19 23:54:23 +0000228FUNCTION_PASS("verify<loops>", LoopVerifierPass())
Geoff Berry783607f2016-06-01 21:30:40 +0000229FUNCTION_PASS("verify<memoryssa>", MemorySSAVerifierPass())
Hongbin Zhengedc89ca2016-02-25 17:54:25 +0000230FUNCTION_PASS("verify<regions>", RegionInfoVerifierPass())
Sean Fertile551913f2018-06-29 17:48:58 +0000231FUNCTION_PASS("view-cfg", CFGViewerPass())
232FUNCTION_PASS("view-cfg-only", CFGOnlyViewerPass())
Michael Kruse9a395de2018-12-12 17:32:52 +0000233FUNCTION_PASS("transform-warning", WarnMissedTransformationsPass())
Philip Pfaffe4956e302019-01-03 13:42:44 +0000234FUNCTION_PASS("msan", MemorySanitizerPass())
Philip Pfaffe6dbe2252019-01-16 09:28:01 +0000235FUNCTION_PASS("tsan", ThreadSanitizerPass())
Chandler Carrutha21cd042014-04-21 08:08:50 +0000236#undef FUNCTION_PASS
Justin Bognerda5e9242016-02-25 07:23:08 +0000237
Fedor Sergeev4f41c192019-01-10 10:01:53 +0000238#ifndef FUNCTION_PASS_WITH_PARAMS
239#define FUNCTION_PASS_WITH_PARAMS(NAME, CREATE_PASS, PARSER)
240#endif
241FUNCTION_PASS_WITH_PARAMS("unroll",
242 [](LoopUnrollOptions Opts) { return LoopUnrollPass(Opts); },
243 parseLoopUnrollOptions)
244#undef FUNCTION_PASS_WITH_PARAMS
245
Justin Bognerda5e9242016-02-25 07:23:08 +0000246#ifndef LOOP_ANALYSIS
247#define LOOP_ANALYSIS(NAME, CREATE_PASS)
248#endif
249LOOP_ANALYSIS("no-op-loop", NoOpLoopAnalysis())
Xinliang David Lifd5a3b42016-07-08 21:21:44 +0000250LOOP_ANALYSIS("access-info", LoopAccessAnalysis())
Dehao Chen78ee4b62016-07-16 22:51:33 +0000251LOOP_ANALYSIS("ivusers", IVUsersAnalysis())
Fedor Sergeeve6959a62018-09-20 17:08:45 +0000252LOOP_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis(PIC))
Justin Bognerda5e9242016-02-25 07:23:08 +0000253#undef LOOP_ANALYSIS
254
255#ifndef LOOP_PASS
256#define LOOP_PASS(NAME, CREATE_PASS)
257#endif
258LOOP_PASS("invalidate<all>", InvalidateAllAnalysesPass())
Dehao Chene06fe022016-07-12 22:42:24 +0000259LOOP_PASS("licm", LICMPass())
Dehao Chen2ba4d7a2016-07-12 18:45:51 +0000260LOOP_PASS("loop-idiom", LoopIdiomRecognizePass())
Chandler Carruth77818502018-05-25 01:32:36 +0000261LOOP_PASS("loop-instsimplify", LoopInstSimplifyPass())
Justin Bogner0b059c12016-05-03 22:02:31 +0000262LOOP_PASS("rotate", LoopRotatePass())
Justin Bognerda5e9242016-02-25 07:23:08 +0000263LOOP_PASS("no-op-loop", NoOpLoopPass())
264LOOP_PASS("print", PrintLoopPass(dbgs()))
Jun Bum Limfa907d32016-07-14 18:28:29 +0000265LOOP_PASS("loop-deletion", LoopDeletionPass())
Justin Bognercc5bcb52016-05-03 21:47:32 +0000266LOOP_PASS("simplify-cfg", LoopSimplifyCFGPass())
Dehao Chene7eb2d52016-07-18 21:41:50 +0000267LOOP_PASS("strength-reduce", LoopStrengthReducePass())
Sanjoy Dasa55495a2016-06-05 18:01:19 +0000268LOOP_PASS("indvars", IndVarSimplifyPass())
Fedor Sergeev116f1ad2018-03-15 11:01:19 +0000269LOOP_PASS("irce", IRCEPass())
David Greene1012712018-07-01 12:47:30 +0000270LOOP_PASS("unroll-and-jam", LoopUnrollAndJamPass())
Teresa Johnson99dd11f2017-08-02 20:35:29 +0000271LOOP_PASS("unroll-full", LoopFullUnrollPass())
Chandler Carruth1d4cf6e2017-04-27 18:45:20 +0000272LOOP_PASS("unswitch", SimpleLoopUnswitchPass())
Xinliang David Li10b22c82016-07-02 21:18:40 +0000273LOOP_PASS("print-access-info", LoopAccessInfoPrinterPass(dbgs()))
Dehao Chen78ee4b62016-07-16 22:51:33 +0000274LOOP_PASS("print<ivusers>", IVUsersPrinterPass(dbgs()))
Artur Pilipenko1dd101b2017-01-25 16:00:44 +0000275LOOP_PASS("loop-predication", LoopPredicationPass())
Justin Bognerda5e9242016-02-25 07:23:08 +0000276#undef LOOP_PASS