6#ifndef JLM_RVSDG_TRACE_HPP
7#define JLM_RVSDG_TRACE_HPP
194 std::optional<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_
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)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
Output & traceOutputIntraProcedurally(Output &output)