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 // createObjCARCAAWrapperPass - This pass implements ObjC-ARC-based
31 ImmutablePass
*createObjCARCAAWrapperPass();
33 FunctionPass
*createPAEvalPass();
35 //===--------------------------------------------------------------------===//
37 /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo
39 FunctionPass
*createLazyValueInfoPass();
41 //===--------------------------------------------------------------------===//
43 // createDependenceAnalysisWrapperPass - This creates an instance of the
44 // DependenceAnalysisWrapper pass.
46 FunctionPass
*createDependenceAnalysisWrapperPass();
48 //===--------------------------------------------------------------------===//
50 // createCostModelAnalysisPass - This creates an instance of the
51 // CostModelAnalysis pass.
53 FunctionPass
*createCostModelAnalysisPass();
55 //===--------------------------------------------------------------------===//
57 // createDelinearizationPass - This pass implements attempts to restore
58 // multidimensional array indices from linearized expressions.
60 FunctionPass
*createDelinearizationPass();
62 //===--------------------------------------------------------------------===//
64 // createLegacyDivergenceAnalysisPass - This pass determines which branches in a GPU
65 // program are divergent.
67 FunctionPass
*createLegacyDivergenceAnalysisPass();
69 //===--------------------------------------------------------------------===//
71 // Minor pass prototypes, allowing us to expose them through bugpoint and
73 FunctionPass
*createInstCountPass();
75 //===--------------------------------------------------------------------===//
77 // createRegionInfoPass - This pass finds all single entry single exit regions
78 // in a function and builds the region hierarchy.
80 FunctionPass
*createRegionInfoPass();
82 // Print module-level debug info metadata in human-readable form.
83 ModulePass
*createModuleDebugInfoPrinterPass();
85 //===--------------------------------------------------------------------===//
87 // createMemDepPrinter - This pass exhaustively collects all memdep
88 // information and prints it with -analyze.
90 FunctionPass
*createMemDepPrinter();
92 //===--------------------------------------------------------------------===//
94 // createMemDerefPrinter - This pass collects memory dereferenceability
95 // information and prints it with -analyze.
97 FunctionPass
*createMemDerefPrinter();
99 //===--------------------------------------------------------------------===//
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.
105 FunctionPass
*createMustExecutePrinter();