7#ifndef JLM_RVSDG_THETA_HPP
8#define JLM_RVSDG_THETA_HPP
87 auto result = subregion()->result(0);
97 predicate()->divert_to(p);
98 if (node && node->IsDead())
139 RemoveLoopVars(std::vector<LoopVar>
loopVars);
Represents the result of a region.
Represent acyclic RVSDG subgraphs.
rvsdg::Region * subregion(size_t index) const noexcept
rvsdg::Region * subregion() const noexcept
void set_predicate(jlm::rvsdg::Output *p)
RegionResult * predicate() const noexcept
~ThetaNode() noexcept override
std::unique_ptr< Operation > copy() const override
~ThetaOperation() noexcept override
std::string debug_string() const override
static bool ThetaLoopVarIsInvariant(const ThetaNode::LoopVar &loopVar) noexcept
static void remove(Node *node)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
Description of a loop-carried variable.
rvsdg::Output * pre
Variable before iteration (input argument to subregion).
rvsdg::Output * output
Variable at loop exit (output of theta).
rvsdg::Input * input
Variable at loop entry (input to theta).
rvsdg::Input * post
Variable after iteration (output result from subregion).