32 std::deque<rvsdg::Input *> worklist;
35 std::vector<rvsdg::SimpleNode *> directCalls;
37 std::vector<rvsdg::Input *> otherUsers;
39 while (!worklist.empty())
41 auto input = worklist.front();
53 otherUsers.emplace_back(input);
59 auto rolevar = gammaNode->MapInput(*input);
60 if (
auto entryvar = std::get_if<rvsdg::GammaNode::EntryVar>(&rolevar))
62 for (
auto & argument : entryvar->branchArgument)
72 auto output = gamma->MapBranchResultExitVar(*input).output;
79 auto loopvar = theta->MapInputLoopVar(*input);
86 auto loopvar = theta->MapPostLoopVar(*input);
93 auto ctxvar = phi->MapInputContextVar(*input);
100 auto fixvar = phi->MapResultFixVar(*input);
103 auto output = fixvar.output;
110 auto ctxVar = deltaNode->MapInputContextVar(*input);
117 otherUsers.emplace_back(input);
122 if (is<CallOperation>(inputNode) && input == inputNode->input(0))
124 directCalls.emplace_back(inputNode);
130 rvsdgExport = graphExport;
136 otherUsers.emplace_back(input);
143 return CallSummary{ rvsdgExport, std::move(directCalls), std::move(otherUsers) };
rvsdg::Output * inner
Access to bound object in subregion.