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