xref: /openbsd-src/gnu/llvm/llvm/include/llvm/Analysis/Passes.h (revision d415bd752c734aee168c4ee86ff32e8cc249eb16)
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   /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
25   /// pass.
26   FunctionPass *createLazyValueInfoPass();
27 
28   //===--------------------------------------------------------------------===//
29   //
30   // createDependenceAnalysisWrapperPass - This creates an instance of the
31   // DependenceAnalysisWrapper pass.
32   //
33   FunctionPass *createDependenceAnalysisWrapperPass();
34 
35   //===--------------------------------------------------------------------===//
36   //
37   // createCostModelAnalysisPass - This creates an instance of the
38   // CostModelAnalysis pass.
39   //
40   FunctionPass *createCostModelAnalysisPass();
41 
42   //===--------------------------------------------------------------------===//
43   //
44   // createDelinearizationPass - This pass implements attempts to restore
45   // multidimensional array indices from linearized expressions.
46   //
47   FunctionPass *createDelinearizationPass();
48 
49   //===--------------------------------------------------------------------===//
50   //
51   // createLegacyDivergenceAnalysisPass - This pass determines which branches in a GPU
52   // program are divergent.
53   //
54   FunctionPass *createLegacyDivergenceAnalysisPass();
55 
56   //===--------------------------------------------------------------------===//
57   //
58   // Minor pass prototypes, allowing us to expose them through bugpoint and
59   // analyze.
60   FunctionPass *createInstCountPass();
61 
62   //===--------------------------------------------------------------------===//
63   //
64   // createRegionInfoPass - This pass finds all single entry single exit regions
65   // in a function and builds the region hierarchy.
66   //
67   FunctionPass *createRegionInfoPass();
68 
69   // Print module-level debug info metadata in human-readable form.
70   ModulePass *createModuleDebugInfoPrinterPass();
71 
72   //===--------------------------------------------------------------------===//
73   //
74   // createMemDepPrinter - This pass exhaustively collects all memdep
75   // information and prints it with -analyze.
76   //
77   FunctionPass *createMemDepPrinter();
78 
79   //===--------------------------------------------------------------------===//
80   //
81   // createMemDerefPrinter - This pass collects memory dereferenceability
82   // information and prints it with -analyze.
83   //
84   FunctionPass *createMemDerefPrinter();
85 
86   //===--------------------------------------------------------------------===//
87   //
88   // createMustExecutePrinter - This pass collects information about which
89   // instructions within a loop are guaranteed to execute if the loop header is
90   // entered and prints it with -analyze.
91   //
92   FunctionPass *createMustExecutePrinter();
93 
94   //===--------------------------------------------------------------------===//
95   //
96   // createMustBeExecutedContextPrinter - This pass prints information about which
97   // instructions are guaranteed to execute together (run with -analyze).
98   //
99   ModulePass *createMustBeExecutedContextPrinter();
100 
101 }
102 
103 #endif
104