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