Jlm
Trace.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2025 HÃ¥vard Krogstie <krogstie.havard@gmail.com>
3  * See COPYING for terms of redistribution.
4  */
5 
6 #ifndef JLM_LLVM_IR_TRACE_HPP
7 #define JLM_LLVM_IR_TRACE_HPP
8 
9 #include <jlm/rvsdg/node.hpp>
10 #include <jlm/rvsdg/Trace.hpp>
11 
12 #include <optional>
13 
14 namespace jlm::llvm
15 {
16 
18 {
19 public:
20  explicit OutputTracer(bool enableCaching);
21 
27  bool
29  {
31  }
32 
37  void
38  setTraceThroughLoadedStates(bool traceThroughLoadedStates)
39  {
40  traceThroughLoadedStates_ = traceThroughLoadedStates;
41  }
42 
43 protected:
44  [[nodiscard]] rvsdg::Output &
45  traceStep(rvsdg::Output & output, const rvsdg::Region * withinRegion) override;
46 
47 private:
49 };
50 
63 traceOutput(rvsdg::Output & output, const rvsdg::Region * withinRegion = nullptr);
64 
65 inline const rvsdg::Output &
66 traceOutput(const rvsdg::Output & output, const rvsdg::Region * withinRegion = nullptr)
67 {
68  return llvm::traceOutput(const_cast<rvsdg::Output &>(output), withinRegion);
69 }
70 
78 std::optional<int64_t>
80 
81 }
82 
83 #endif // JLM_LLVM_IR_TRACE_HPP
bool traceThroughLoadedStates_
Definition: Trace.hpp:48
bool isTracingThroughLoadedStates()
Definition: Trace.hpp:28
void setTraceThroughLoadedStates(bool traceThroughLoadedStates)
Definition: Trace.hpp:38
rvsdg::Output & traceStep(rvsdg::Output &output, const rvsdg::Region *withinRegion) override
Definition: Trace.cpp:24
OutputTracer(bool enableCaching)
Definition: Trace.cpp:19
Represent acyclic RVSDG subgraphs.
Definition: region.hpp:213
Global memory state passed between functions.
rvsdg::Output & traceOutput(rvsdg::Output &output, const rvsdg::Region *withinRegion)
Definition: Trace.cpp:54
std::optional< int64_t > tryGetConstantSignedInteger(const rvsdg::Output &output)
Definition: Trace.cpp:62