Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===-- RegionPrinter.h - Region printer external interface -----*- 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 file defines external functions that can be called to explicitly
  10. // instantiate the region printer.
  11. //
  12. //===----------------------------------------------------------------------===//
  13.  
  14. #ifndef LLVM_ANALYSIS_REGIONPRINTER_H
  15. #define LLVM_ANALYSIS_REGIONPRINTER_H
  16.  
  17. #include "llvm/Analysis/DOTGraphTraitsPass.h"
  18. #include "llvm/Analysis/RegionInfo.h"
  19.  
  20. namespace llvm {
  21.   class FunctionPass;
  22.   class Function;
  23.   class RegionInfo;
  24.  
  25.   FunctionPass *createRegionViewerPass();
  26.   FunctionPass *createRegionOnlyViewerPass();
  27.   FunctionPass *createRegionPrinterPass();
  28.   FunctionPass *createRegionOnlyPrinterPass();
  29.  
  30.   template <>
  31.   struct DOTGraphTraits<RegionNode *> : public DefaultDOTGraphTraits {
  32.     DOTGraphTraits(bool isSimple = false) : DefaultDOTGraphTraits(isSimple) {}
  33.  
  34.     std::string getNodeLabel(RegionNode *Node, RegionNode *Graph);
  35.   };
  36.  
  37. #ifndef NDEBUG
  38.   /// Open a viewer to display the GraphViz vizualization of the analysis
  39.   /// result.
  40.   ///
  41.   /// Practical to call in the debugger.
  42.   /// Includes the instructions in each BasicBlock.
  43.   ///
  44.   /// @param RI The analysis to display.
  45.   void viewRegion(llvm::RegionInfo *RI);
  46.  
  47.   /// Analyze the regions of a function and open its GraphViz
  48.   /// visualization in a viewer.
  49.   ///
  50.   /// Useful to call in the debugger.
  51.   /// Includes the instructions in each BasicBlock.
  52.   /// The result of a new analysis may differ from the RegionInfo the pass
  53.   /// manager currently holds.
  54.   ///
  55.   /// @param F Function to analyze.
  56.   void viewRegion(const llvm::Function *F);
  57.  
  58.   /// Open a viewer to display the GraphViz vizualization of the analysis
  59.   /// result.
  60.   ///
  61.   /// Useful to call in the debugger.
  62.   /// Shows only the BasicBlock names without their instructions.
  63.   ///
  64.   /// @param RI The analysis to display.
  65.   void viewRegionOnly(llvm::RegionInfo *RI);
  66.  
  67.   /// Analyze the regions of a function and open its GraphViz
  68.   /// visualization in a viewer.
  69.   ///
  70.   /// Useful to call in the debugger.
  71.   /// Shows only the BasicBlock names without their instructions.
  72.   /// The result of a new analysis may differ from the RegionInfo the pass
  73.   /// manager currently holds.
  74.   ///
  75.   /// @param F Function to analyze.
  76.   void viewRegionOnly(const llvm::Function *F);
  77. #endif
  78. } // End llvm namespace
  79.  
  80. #endif
  81.