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
20namespace 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

source code of llvm/include/llvm/Analysis/RegionPrinter.h