46 throw util::Error(
"There should be only simple nodes and loop nodes");
49 for (
size_t i = 0;
i < node->noutputs();
i++)
51 if (node->output(
i)->nusers() == 0)
55 else if (node->output(
i)->nusers() > 1)
70 auto & graph =
rm.Rvsdg();
71 auto root = &graph.GetRootRegion();
72 if (root->numNodes() != 1)
74 throw util::Error(
"Root should have only one node now");
~RhlsVerification() noexcept override
void Run(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
NodeInput * input(size_t index) const noexcept
NodeOutput * output(size_t index) const noexcept
Represent acyclic RVSDG subgraphs.
rvsdg::Output * FindSourceNode(rvsdg::Output *out)
static void check_rhls(rvsdg::Region *sr)
static void CheckAddrQueue(rvsdg::Node *node)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
detail::TopDownTraverserGeneric< false > TopDownTraverser
Traverser for visiting every node in a region in a top down order.