Jlm
Loading...
Searching...
No Matches
RvsdgTreePrinter.hpp
Go to the documentation of this file.
1/*
2 * Copyright 2024 Nico Reißmann <nico.reissmann@gmail.com>
3 * See COPYING for terms of redistribution.
4 */
5
6#ifndef JLM_LLVM_OPT_RVSDGTREEPRINTER_HPP
7#define JLM_LLVM_OPT_RVSDGTREEPRINTER_HPP
8
11#include <jlm/util/HashSet.hpp>
12
13namespace jlm::rvsdg
14{
15class Graph;
16class Node;
17class Input;
18class Output;
19}
20
21namespace jlm::util
22{
23class StatisticsCollector;
24}
25
26namespace jlm::llvm
27{
28
34{
35 class Statistics;
36
37public:
41 class Configuration final
42 {
43 public:
94
95 explicit Configuration(util::HashSet<Annotation> requiredAnnotations)
96 : RequiredAnnotations_(std::move(requiredAnnotations))
97 {}
98
102 [[nodiscard]] const util::HashSet<Annotation> &
103 RequiredAnnotations() const noexcept
104 {
106 }
107
108 private:
110 };
111
112 ~RvsdgTreePrinter() noexcept override;
113
114 explicit RvsdgTreePrinter(Configuration configuration)
116 Configuration_(std::move(configuration))
117 {}
118
120
122
124 operator=(const RvsdgTreePrinter &) = delete;
125
128
129 void
131
132private:
140 [[nodiscard]] util::AnnotationMap
141 ComputeAnnotationMap(const rvsdg::Graph & rvsdg) const;
142
154 static void
156 const rvsdg::Graph & rvsdg,
157 const std::function<bool(const rvsdg::Node &)> & match,
158 const std::string_view & label,
159 util::AnnotationMap & annotationMap);
160
170 static void
172 const rvsdg::Graph & rvsdg,
173 util::AnnotationMap & annotationMap);
174
183 static void
184 AnnotateDebugIds(const rvsdg::Graph & rvsdg, util::AnnotationMap & annotationMap);
185
186 [[nodiscard]] static bool
187 IsMemoryStateInput(const rvsdg::Input * input) noexcept;
188
189 [[nodiscard]] static bool
190 IsMemoryStateOutput(const rvsdg::Output * output) noexcept;
191
193};
194
195}
196
197#endif
static jlm::util::StatisticsCollector statisticsCollector
Configuration(util::HashSet< Annotation > requiredAnnotations)
const util::HashSet< Annotation > & RequiredAnnotations() const noexcept
util::HashSet< Annotation > RequiredAnnotations_
RVSDG tree printer debug pass.
RvsdgTreePrinter & operator=(const RvsdgTreePrinter &)=delete
util::AnnotationMap ComputeAnnotationMap(const rvsdg::Graph &rvsdg) const
static bool IsMemoryStateOutput(const rvsdg::Output *output) noexcept
RvsdgTreePrinter(RvsdgTreePrinter &&)=delete
~RvsdgTreePrinter() noexcept override
static void AnnotateDebugIds(const rvsdg::Graph &rvsdg, util::AnnotationMap &annotationMap)
static void AnnotateNumMemoryStateInputsOutputs(const rvsdg::Graph &rvsdg, util::AnnotationMap &annotationMap)
RvsdgTreePrinter(const RvsdgTreePrinter &)=delete
static bool IsMemoryStateInput(const rvsdg::Input *input) noexcept
void Run(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
static void AnnotateNumNodes(const rvsdg::Graph &rvsdg, const std::function< bool(const rvsdg::Node &)> &match, const std::string_view &label, util::AnnotationMap &annotationMap)
RvsdgTreePrinter & operator=(RvsdgTreePrinter &&)=delete
Represents an RVSDG transformation.
Transformation(std::string_view Name)
Global memory state passed between functions.