1283625Sdim//===- PassRegistry.def - Registry of passes --------------------*- C++ -*-===//
2283625Sdim//
3283625Sdim//                     The LLVM Compiler Infrastructure
4283625Sdim//
5283625Sdim// This file is distributed under the University of Illinois Open Source
6283625Sdim// License. See LICENSE.TXT for details.
7283625Sdim//
8283625Sdim//===----------------------------------------------------------------------===//
9283625Sdim//
10283625Sdim// This file is used as the registry of passes that are part of the core LLVM
11283625Sdim// libraries. This file describes both transformation passes and analyses
12283625Sdim// Analyses are registered while transformation passes have names registered
13283625Sdim// that can be used when providing a textual pass pipeline.
14283625Sdim//
15283625Sdim//===----------------------------------------------------------------------===//
16283625Sdim
17283625Sdim// NOTE: NO INCLUDE GUARD DESIRED!
18283625Sdim
19283625Sdim#ifndef MODULE_ANALYSIS
20283625Sdim#define MODULE_ANALYSIS(NAME, CREATE_PASS)
21283625Sdim#endif
22283625SdimMODULE_ANALYSIS("lcg", LazyCallGraphAnalysis())
23283625SdimMODULE_ANALYSIS("no-op-module", NoOpModuleAnalysis())
24283625SdimMODULE_ANALYSIS("targetlibinfo", TargetLibraryAnalysis())
25283625Sdim#undef MODULE_ANALYSIS
26283625Sdim
27283625Sdim#ifndef MODULE_PASS
28283625Sdim#define MODULE_PASS(NAME, CREATE_PASS)
29283625Sdim#endif
30296417SdimMODULE_PASS("forceattrs", ForceFunctionAttrsPass())
31296417SdimMODULE_PASS("inferattrs", InferFunctionAttrsPass())
32283625SdimMODULE_PASS("invalidate<all>", InvalidateAllAnalysesPass())
33283625SdimMODULE_PASS("no-op-module", NoOpModulePass())
34283625SdimMODULE_PASS("print", PrintModulePass(dbgs()))
35283625SdimMODULE_PASS("print-cg", LazyCallGraphPrinterPass(dbgs()))
36296417SdimMODULE_PASS("strip-dead-prototypes", StripDeadPrototypesPass())
37283625SdimMODULE_PASS("verify", VerifierPass())
38283625Sdim#undef MODULE_PASS
39283625Sdim
40283625Sdim#ifndef CGSCC_ANALYSIS
41283625Sdim#define CGSCC_ANALYSIS(NAME, CREATE_PASS)
42283625Sdim#endif
43283625SdimCGSCC_ANALYSIS("no-op-cgscc", NoOpCGSCCAnalysis())
44283625Sdim#undef CGSCC_ANALYSIS
45283625Sdim
46283625Sdim#ifndef CGSCC_PASS
47283625Sdim#define CGSCC_PASS(NAME, CREATE_PASS)
48283625Sdim#endif
49283625SdimCGSCC_PASS("invalidate<all>", InvalidateAllAnalysesPass())
50283625SdimCGSCC_PASS("no-op-cgscc", NoOpCGSCCPass())
51283625Sdim#undef CGSCC_PASS
52283625Sdim
53283625Sdim#ifndef FUNCTION_ANALYSIS
54283625Sdim#define FUNCTION_ANALYSIS(NAME, CREATE_PASS)
55283625Sdim#endif
56283625SdimFUNCTION_ANALYSIS("assumptions", AssumptionAnalysis())
57283625SdimFUNCTION_ANALYSIS("domtree", DominatorTreeAnalysis())
58283625SdimFUNCTION_ANALYSIS("loops", LoopAnalysis())
59283625SdimFUNCTION_ANALYSIS("no-op-function", NoOpFunctionAnalysis())
60296417SdimFUNCTION_ANALYSIS("scalar-evolution", ScalarEvolutionAnalysis())
61283625SdimFUNCTION_ANALYSIS("targetlibinfo", TargetLibraryAnalysis())
62283625SdimFUNCTION_ANALYSIS("targetir",
63283625Sdim                  TM ? TM->getTargetIRAnalysis() : TargetIRAnalysis())
64283625Sdim#undef FUNCTION_ANALYSIS
65283625Sdim
66283625Sdim#ifndef FUNCTION_PASS
67283625Sdim#define FUNCTION_PASS(NAME, CREATE_PASS)
68283625Sdim#endif
69296417SdimFUNCTION_PASS("adce", ADCEPass())
70283625SdimFUNCTION_PASS("early-cse", EarlyCSEPass())
71283625SdimFUNCTION_PASS("instcombine", InstCombinePass())
72283625SdimFUNCTION_PASS("invalidate<all>", InvalidateAllAnalysesPass())
73283625SdimFUNCTION_PASS("no-op-function", NoOpFunctionPass())
74283625SdimFUNCTION_PASS("lower-expect", LowerExpectIntrinsicPass())
75283625SdimFUNCTION_PASS("print", PrintFunctionPass(dbgs()))
76283625SdimFUNCTION_PASS("print<assumptions>", AssumptionPrinterPass(dbgs()))
77283625SdimFUNCTION_PASS("print<domtree>", DominatorTreePrinterPass(dbgs()))
78283625SdimFUNCTION_PASS("print<loops>", LoopPrinterPass(dbgs()))
79296417SdimFUNCTION_PASS("print<scalar-evolution>", ScalarEvolutionPrinterPass(dbgs()))
80283625SdimFUNCTION_PASS("simplify-cfg", SimplifyCFGPass())
81296417SdimFUNCTION_PASS("sroa", SROA())
82283625SdimFUNCTION_PASS("verify", VerifierPass())
83283625SdimFUNCTION_PASS("verify<domtree>", DominatorTreeVerifierPass())
84283625Sdim#undef FUNCTION_PASS
85