Home | History | Annotate | Download | only in Analysis
      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   /// @brief 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   /// @brief 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   /// @brief 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   /// @brief 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