1351278Sdim//===-- llvm/Analysis/Passes.h - Constructors for analyses ------*- C++ -*-===// 2351278Sdim// 3351278Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4351278Sdim// See https://llvm.org/LICENSE.txt for license information. 5351278Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6351278Sdim// 7351278Sdim//===----------------------------------------------------------------------===// 8351278Sdim// 9351278Sdim// This header file defines prototypes for accessor functions that expose passes 10351278Sdim// in the analysis libraries. 11351278Sdim// 12351278Sdim//===----------------------------------------------------------------------===// 13351278Sdim 14351278Sdim#ifndef LLVM_ANALYSIS_PASSES_H 15351278Sdim#define LLVM_ANALYSIS_PASSES_H 16351278Sdim 17351278Sdimnamespace llvm { 18351278Sdim class FunctionPass; 19351278Sdim class ImmutablePass; 20351278Sdim class ModulePass; 21351278Sdim 22351278Sdim //===--------------------------------------------------------------------===// 23351278Sdim // 24351278Sdim // createObjCARCAAWrapperPass - This pass implements ObjC-ARC-based 25351278Sdim // alias analysis. 26351278Sdim // 27351278Sdim ImmutablePass *createObjCARCAAWrapperPass(); 28351278Sdim 29351278Sdim FunctionPass *createPAEvalPass(); 30351278Sdim 31351278Sdim //===--------------------------------------------------------------------===// 32351278Sdim // 33351278Sdim /// createLazyValueInfoPass - This creates an instance of the LazyValueInfo 34351278Sdim /// pass. 35351278Sdim FunctionPass *createLazyValueInfoPass(); 36351278Sdim 37351278Sdim //===--------------------------------------------------------------------===// 38351278Sdim // 39351278Sdim // createDependenceAnalysisWrapperPass - This creates an instance of the 40351278Sdim // DependenceAnalysisWrapper pass. 41351278Sdim // 42351278Sdim FunctionPass *createDependenceAnalysisWrapperPass(); 43351278Sdim 44351278Sdim //===--------------------------------------------------------------------===// 45351278Sdim // 46351278Sdim // createCostModelAnalysisPass - This creates an instance of the 47351278Sdim // CostModelAnalysis pass. 48351278Sdim // 49351278Sdim FunctionPass *createCostModelAnalysisPass(); 50351278Sdim 51351278Sdim //===--------------------------------------------------------------------===// 52351278Sdim // 53351278Sdim // createDelinearizationPass - This pass implements attempts to restore 54351278Sdim // multidimensional array indices from linearized expressions. 55351278Sdim // 56351278Sdim FunctionPass *createDelinearizationPass(); 57351278Sdim 58351278Sdim //===--------------------------------------------------------------------===// 59351278Sdim // 60351278Sdim // createLegacyDivergenceAnalysisPass - This pass determines which branches in a GPU 61351278Sdim // program are divergent. 62351278Sdim // 63351278Sdim FunctionPass *createLegacyDivergenceAnalysisPass(); 64351278Sdim 65351278Sdim //===--------------------------------------------------------------------===// 66351278Sdim // 67351278Sdim // Minor pass prototypes, allowing us to expose them through bugpoint and 68351278Sdim // analyze. 69351278Sdim FunctionPass *createInstCountPass(); 70351278Sdim 71351278Sdim //===--------------------------------------------------------------------===// 72351278Sdim // 73351278Sdim // createRegionInfoPass - This pass finds all single entry single exit regions 74351278Sdim // in a function and builds the region hierarchy. 75351278Sdim // 76351278Sdim FunctionPass *createRegionInfoPass(); 77351278Sdim 78351278Sdim // Print module-level debug info metadata in human-readable form. 79351278Sdim ModulePass *createModuleDebugInfoPrinterPass(); 80351278Sdim 81351278Sdim //===--------------------------------------------------------------------===// 82351278Sdim // 83351278Sdim // createMemDepPrinter - This pass exhaustively collects all memdep 84351278Sdim // information and prints it with -analyze. 85351278Sdim // 86351278Sdim FunctionPass *createMemDepPrinter(); 87351278Sdim 88351278Sdim //===--------------------------------------------------------------------===// 89351278Sdim // 90351278Sdim // createMemDerefPrinter - This pass collects memory dereferenceability 91351278Sdim // information and prints it with -analyze. 92351278Sdim // 93351278Sdim FunctionPass *createMemDerefPrinter(); 94351278Sdim 95351278Sdim //===--------------------------------------------------------------------===// 96351278Sdim // 97351278Sdim // createMustExecutePrinter - This pass collects information about which 98351278Sdim // instructions within a loop are guaranteed to execute if the loop header is 99351278Sdim // entered and prints it with -analyze. 100351278Sdim // 101351278Sdim FunctionPass *createMustExecutePrinter(); 102351278Sdim 103351278Sdim //===--------------------------------------------------------------------===// 104351278Sdim // 105351278Sdim // createMustBeExecutedContextPrinter - This pass prints information about which 106351278Sdim // instructions are guaranteed to execute together (run with -analyze). 107351278Sdim // 108351278Sdim ModulePass *createMustBeExecutedContextPrinter(); 109351278Sdim 110351278Sdim} 111351278Sdim 112351278Sdim#endif 113351278Sdim