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
17namespace 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