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