6 #ifndef JLM_RVSDG_TRACE_HPP
7 #define JLM_RVSDG_TRACE_HPP
175 [[nodiscard]]
virtual Output &
194 std::optional<Output *>
230 inline const Output &
256 inline const Output &
Conditional operator / pattern matching.
bool isTracingThroughStructuralNodes() const noexcept
void setEnterPhiNodes(bool value) noexcept
Output * tryTraceThroughGamma(GammaNode &gammaNode, Output &output)
void setTraceThroughStructuralNodes(bool value) noexcept
void setInterprocedural(bool value) noexcept
bool isInterprocedural() const noexcept
Output * insertInCache(const Output &output, Input *traceResult)
Output & trace(Output &output)
virtual Output & traceStep(Output &output, const rvsdg::Region *withinRegion)
bool isEnteringPhiNodes() const noexcept
bool traceThroughStrucutalNodes_
std::unordered_map< const Output *, Input * > traceCache_
OutputTracer(bool enableCaching) noexcept
Output * tryTraceThroughTheta(ThetaNode &thetaNode, Output &output)
std::optional< Output * > lookupInCache(const Output &output)
Represent acyclic RVSDG subgraphs.
Output & traceOutput(Output &output, const rvsdg::Region *withinRegion)
Output & traceOutputIntraProcedurally(Output &output)