1 //===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This header file defines prototypes for accessor functions that expose passes
11 // in the analysis libraries.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_ANALYSIS_PASSES_H
16 #define LLVM_ANALYSIS_PASSES_H
27 //===--------------------------------------------------------------------===//
29 // createAAEvalPass - This pass implements a simple N^2 alias analysis
30 // accuracy evaluator.
32 FunctionPass *createAAEvalPass();
34 //===--------------------------------------------------------------------===//
36 // createNoAAPass - This pass implements a "I don't know" alias analysis.
38 ImmutablePass *createNoAAPass();
40 //===--------------------------------------------------------------------===//
42 // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based
45 ImmutablePass *createObjCARCAliasAnalysisPass();
47 FunctionPass *createPAEvalPass();
49 //===--------------------------------------------------------------------===//
51 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
53 FunctionPass *createLazyValueInfoPass();
55 //===--------------------------------------------------------------------===//
57 // createDependenceAnalysisPass - This creates an instance of the
58 // DependenceAnalysis pass.
60 FunctionPass *createDependenceAnalysisPass();
62 //===--------------------------------------------------------------------===//
64 // createCostModelAnalysisPass - This creates an instance of the
65 // CostModelAnalysis pass.
67 FunctionPass *createCostModelAnalysisPass();
69 //===--------------------------------------------------------------------===//
71 // createDelinearizationPass - This pass implements attempts to restore
72 // multidimensional array indices from linearized expressions.
74 FunctionPass *createDelinearizationPass();
76 //===--------------------------------------------------------------------===//
78 // createDivergenceAnalysisPass - This pass determines which branches in a GPU
79 // program are divergent.
81 FunctionPass *createDivergenceAnalysisPass();
83 //===--------------------------------------------------------------------===//
85 // Minor pass prototypes, allowing us to expose them through bugpoint and
87 FunctionPass *createInstCountPass();
89 //===--------------------------------------------------------------------===//
91 // createRegionInfoPass - This pass finds all single entry single exit regions
92 // in a function and builds the region hierarchy.
94 FunctionPass *createRegionInfoPass();
96 // Print module-level debug info metadata in human-readable form.
97 ModulePass *createModuleDebugInfoPrinterPass();
99 //===--------------------------------------------------------------------===//
101 // createMemDepPrinter - This pass exhaustively collects all memdep
102 // information and prints it with -analyze.
104 FunctionPass *createMemDepPrinter();
106 //===--------------------------------------------------------------------===//
108 // createMemDerefPrinter - This pass collects memory dereferenceability
109 // information and prints it with -analyze.
111 FunctionPass *createMemDerefPrinter();