1351278Sdim//===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===//
2351278Sdim//
3351278Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4351278Sdim// See https://llvm.org/LICENSE.txt for license information.
5351278Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6351278Sdim//
7351278Sdim//===----------------------------------------------------------------------===//
8351278Sdim//
9351278Sdim// This header file defines prototypes for accessor functions that expose passes
10351278Sdim// in the analysis libraries.
11351278Sdim//
12351278Sdim//===----------------------------------------------------------------------===//
13351278Sdim
14351278Sdim#ifndef LLVM_ANALYSIS_PASSES_H
15351278Sdim#define LLVM_ANALYSIS_PASSES_H
16351278Sdim
17351278Sdimnamespace llvm {
18351278Sdim  class FunctionPass;
19351278Sdim  class ImmutablePass;
20351278Sdim  class ModulePass;
21351278Sdim
22351278Sdim  //===--------------------------------------------------------------------===//
23351278Sdim  //
24351278Sdim  // createObjCARCAAWrapperPass - This pass implements ObjC-ARC-based
25351278Sdim  // alias analysis.
26351278Sdim  //
27351278Sdim  ImmutablePass *createObjCARCAAWrapperPass();
28351278Sdim
29351278Sdim  FunctionPass *createPAEvalPass();
30351278Sdim
31351278Sdim  //===--------------------------------------------------------------------===//
32351278Sdim  //
33351278Sdim  /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
34351278Sdim  /// pass.
35351278Sdim  FunctionPass *createLazyValueInfoPass();
36351278Sdim
37351278Sdim  //===--------------------------------------------------------------------===//
38351278Sdim  //
39351278Sdim  // createDependenceAnalysisWrapperPass - This creates an instance of the
40351278Sdim  // DependenceAnalysisWrapper pass.
41351278Sdim  //
42351278Sdim  FunctionPass *createDependenceAnalysisWrapperPass();
43351278Sdim
44351278Sdim  //===--------------------------------------------------------------------===//
45351278Sdim  //
46351278Sdim  // createCostModelAnalysisPass - This creates an instance of the
47351278Sdim  // CostModelAnalysis pass.
48351278Sdim  //
49351278Sdim  FunctionPass *createCostModelAnalysisPass();
50351278Sdim
51351278Sdim  //===--------------------------------------------------------------------===//
52351278Sdim  //
53351278Sdim  // createDelinearizationPass - This pass implements attempts to restore
54351278Sdim  // multidimensional array indices from linearized expressions.
55351278Sdim  //
56351278Sdim  FunctionPass *createDelinearizationPass();
57351278Sdim
58351278Sdim  //===--------------------------------------------------------------------===//
59351278Sdim  //
60351278Sdim  // createLegacyDivergenceAnalysisPass - This pass determines which branches in a GPU
61351278Sdim  // program are divergent.
62351278Sdim  //
63351278Sdim  FunctionPass *createLegacyDivergenceAnalysisPass();
64351278Sdim
65351278Sdim  //===--------------------------------------------------------------------===//
66351278Sdim  //
67351278Sdim  // Minor pass prototypes, allowing us to expose them through bugpoint and
68351278Sdim  // analyze.
69351278Sdim  FunctionPass *createInstCountPass();
70351278Sdim
71351278Sdim  //===--------------------------------------------------------------------===//
72351278Sdim  //
73351278Sdim  // createRegionInfoPass - This pass finds all single entry single exit regions
74351278Sdim  // in a function and builds the region hierarchy.
75351278Sdim  //
76351278Sdim  FunctionPass *createRegionInfoPass();
77351278Sdim
78351278Sdim  // Print module-level debug info metadata in human-readable form.
79351278Sdim  ModulePass *createModuleDebugInfoPrinterPass();
80351278Sdim
81351278Sdim  //===--------------------------------------------------------------------===//
82351278Sdim  //
83351278Sdim  // createMemDepPrinter - This pass exhaustively collects all memdep
84351278Sdim  // information and prints it with -analyze.
85351278Sdim  //
86351278Sdim  FunctionPass *createMemDepPrinter();
87351278Sdim
88351278Sdim  //===--------------------------------------------------------------------===//
89351278Sdim  //
90351278Sdim  // createMemDerefPrinter - This pass collects memory dereferenceability
91351278Sdim  // information and prints it with -analyze.
92351278Sdim  //
93351278Sdim  FunctionPass *createMemDerefPrinter();
94351278Sdim
95351278Sdim  //===--------------------------------------------------------------------===//
96351278Sdim  //
97351278Sdim  // createMustExecutePrinter - This pass collects information about which
98351278Sdim  // instructions within a loop are guaranteed to execute if the loop header is
99351278Sdim  // entered and prints it with -analyze.
100351278Sdim  //
101351278Sdim  FunctionPass *createMustExecutePrinter();
102351278Sdim
103351278Sdim  //===--------------------------------------------------------------------===//
104351278Sdim  //
105351278Sdim  // createMustBeExecutedContextPrinter - This pass prints information about which
106351278Sdim  // instructions are guaranteed to execute together (run with -analyze).
107351278Sdim  //
108351278Sdim  ModulePass *createMustBeExecutedContextPrinter();
109351278Sdim
110351278Sdim}
111351278Sdim
112351278Sdim#endif
113351278Sdim