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
26 //===--------------------------------------------------------------------===//
28 // createAAEvalPass - This pass implements a simple N^2 alias analysis
29 // accuracy evaluator.
31 FunctionPass *createAAEvalPass();
33 //===--------------------------------------------------------------------===//
35 // createNoAAPass - This pass implements a "I don't know" alias analysis.
37 ImmutablePass *createNoAAPass();
39 //===--------------------------------------------------------------------===//
41 // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based
44 ImmutablePass *createObjCARCAliasAnalysisPass();
46 FunctionPass *createPAEvalPass();
48 //===--------------------------------------------------------------------===//
50 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
52 FunctionPass *createLazyValueInfoPass();
54 //===--------------------------------------------------------------------===//
56 // createDependenceAnalysisPass - This creates an instance of the
57 // DependenceAnalysis pass.
59 FunctionPass *createDependenceAnalysisPass();
61 //===--------------------------------------------------------------------===//
63 // createCostModelAnalysisPass - This creates an instance of the
64 // CostModelAnalysis pass.
66 FunctionPass *createCostModelAnalysisPass();
68 //===--------------------------------------------------------------------===//
70 // createDelinearizationPass - This pass implements attempts to restore
71 // multidimensional array indices from linearized expressions.
73 FunctionPass *createDelinearizationPass();
75 //===--------------------------------------------------------------------===//
77 // createDivergenceAnalysisPass - This pass determines which branches in a GPU
78 // program are divergent.
80 FunctionPass *createDivergenceAnalysisPass();
82 //===--------------------------------------------------------------------===//
84 // Minor pass prototypes, allowing us to expose them through bugpoint and
86 FunctionPass *createInstCountPass();
88 //===--------------------------------------------------------------------===//
90 // createRegionInfoPass - This pass finds all single entry single exit regions
91 // in a function and builds the region hierarchy.
93 FunctionPass *createRegionInfoPass();
95 // Print module-level debug info metadata in human-readable form.
96 ModulePass *createModuleDebugInfoPrinterPass();
98 //===--------------------------------------------------------------------===//
100 // createMemDepPrinter - This pass exhaustively collects all memdep
101 // information and prints it with -analyze.
103 FunctionPass *createMemDepPrinter();
105 //===--------------------------------------------------------------------===//
107 // createMemDerefPrinter - This pass collects memory dereferenceability
108 // information and prints it with -analyze.
110 FunctionPass *createMemDerefPrinter();