1 //===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This header file defines prototypes for accessor functions that expose passes
10 // in the analysis libraries.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_ANALYSIS_PASSES_H
15 #define LLVM_ANALYSIS_PASSES_H
16 
17 namespace llvm {
18   class FunctionPass;
19   class ImmutablePass;
20   class ModulePass;
21 
22   //===--------------------------------------------------------------------===//
23   //
24   // createObjCARCAAWrapperPass - This pass implements ObjC-ARC-based
25   // alias analysis.
26   //
27   ImmutablePass *createObjCARCAAWrapperPass();
28 
29   FunctionPass *createPAEvalPass();
30 
31   //===--------------------------------------------------------------------===//
32   //
33   /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
34   /// pass.
35   FunctionPass *createLazyValueInfoPass();
36 
37   //===--------------------------------------------------------------------===//
38   //
39   // createDependenceAnalysisWrapperPass - This creates an instance of the
40   // DependenceAnalysisWrapper pass.
41   //
42   FunctionPass *createDependenceAnalysisWrapperPass();
43 
44   //===--------------------------------------------------------------------===//
45   //
46   // createCostModelAnalysisPass - This creates an instance of the
47   // CostModelAnalysis pass.
48   //
49   FunctionPass *createCostModelAnalysisPass();
50 
51   //===--------------------------------------------------------------------===//
52   //
53   // createDelinearizationPass - This pass implements attempts to restore
54   // multidimensional array indices from linearized expressions.
55   //
56   FunctionPass *createDelinearizationPass();
57 
58   //===--------------------------------------------------------------------===//
59   //
60   // createLegacyDivergenceAnalysisPass - This pass determines which branches in a GPU
61   // program are divergent.
62   //
63   FunctionPass *createLegacyDivergenceAnalysisPass();
64 
65   //===--------------------------------------------------------------------===//
66   //
67   // Minor pass prototypes, allowing us to expose them through bugpoint and
68   // analyze.
69   FunctionPass *createInstCountPass();
70 
71   //===--------------------------------------------------------------------===//
72   //
73   // createRegionInfoPass - This pass finds all single entry single exit regions
74   // in a function and builds the region hierarchy.
75   //
76   FunctionPass *createRegionInfoPass();
77 
78   // Print module-level debug info metadata in human-readable form.
79   ModulePass *createModuleDebugInfoPrinterPass();
80 
81   //===--------------------------------------------------------------------===//
82   //
83   // createMemDepPrinter - This pass exhaustively collects all memdep
84   // information and prints it with -analyze.
85   //
86   FunctionPass *createMemDepPrinter();
87 
88   //===--------------------------------------------------------------------===//
89   //
90   // createMemDerefPrinter - This pass collects memory dereferenceability
91   // information and prints it with -analyze.
92   //
93   FunctionPass *createMemDerefPrinter();
94 
95   //===--------------------------------------------------------------------===//
96   //
97   // createMustExecutePrinter - This pass collects information about which
98   // instructions within a loop are guaranteed to execute if the loop header is
99   // entered and prints it with -analyze.
100   //
101   FunctionPass *createMustExecutePrinter();
102 
103   //===--------------------------------------------------------------------===//
104   //
105   // createMustBeExecutedContextPrinter - This pass prints information about which
106   // instructions are guaranteed to execute together (run with -analyze).
107   //
108   ModulePass *createMustBeExecutedContextPrinter();
109 
110 }
111 
112 #endif
113