1 //===-- RegionPrinter.h - Region printer external interface -----*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file defines external functions that can be called to explicitly 11 // instantiate the region printer. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_ANALYSIS_REGIONPRINTER_H 16 #define LLVM_ANALYSIS_REGIONPRINTER_H 17 18 namespace llvm { 19 class FunctionPass; 20 class Function; 21 class RegionInfo; 22 23 FunctionPass *createRegionViewerPass(); 24 FunctionPass *createRegionOnlyViewerPass(); 25 FunctionPass *createRegionPrinterPass(); 26 FunctionPass *createRegionOnlyPrinterPass(); 27 28 #ifndef NDEBUG 29 /// Open a viewer to display the GraphViz vizualization of the analysis 30 /// result. 31 /// 32 /// Practical to call in the debugger. 33 /// Includes the instructions in each BasicBlock. 34 /// 35 /// @param RI The analysis to display. 36 void viewRegion(llvm::RegionInfo *RI); 37 38 /// Analyze the regions of a function and open its GraphViz 39 /// visualization in a viewer. 40 /// 41 /// Useful to call in the debugger. 42 /// Includes the instructions in each BasicBlock. 43 /// The result of a new analysis may differ from the RegionInfo the pass 44 /// manager currently holds. 45 /// 46 /// @param F Function to analyze. 47 void viewRegion(const llvm::Function *F); 48 49 /// Open a viewer to display the GraphViz vizualization of the analysis 50 /// result. 51 /// 52 /// Useful to call in the debugger. 53 /// Shows only the BasicBlock names without their instructions. 54 /// 55 /// @param RI The analysis to display. 56 void viewRegionOnly(llvm::RegionInfo *RI); 57 58 /// Analyze the regions of a function and open its GraphViz 59 /// visualization in a viewer. 60 /// 61 /// Useful to call in the debugger. 62 /// Shows only the BasicBlock names without their instructions. 63 /// The result of a new analysis may differ from the RegionInfo the pass 64 /// manager currently holds. 65 /// 66 /// @param F Function to analyze. 67 void viewRegionOnly(const llvm::Function *F); 68 #endif 69 } // End llvm namespace 70 71 #endif 72