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