15 JLM_ASSERT(is<llvm::LlvmLambdaOperation>(&lambdaNode));
16 const auto argument = lambdaNode.GetFunctionArguments().back();
17 JLM_ASSERT(is<MemoryStateType>(argument->Type()));
24 JLM_ASSERT(is<llvm::LlvmLambdaOperation>(&lambdaNode));
25 const auto result = lambdaNode.GetFunctionResults().back();
26 JLM_ASSERT(is<MemoryStateType>(result->Type()));
35 const auto node = rvsdg::TryGetOwnerNode<rvsdg::SimpleNode>(*result.origin());
36 return is<LambdaExitMemoryStateMergeOperation>(node) ? node :
nullptr;
46 if (argument.nusers() != 1)
49 const auto node = rvsdg::TryGetOwnerNode<rvsdg::SimpleNode>(argument.SingleUser());
50 return is<LambdaEntryMemoryStateSplitOperation>(node) ?
dynamic_cast<rvsdg::SimpleNode *
>(node)
Global memory state passed between functions.
rvsdg::SimpleNode * tryGetMemoryStateEntrySplit(const rvsdg::LambdaNode &lambdaNode) noexcept
rvsdg::Input & GetMemoryStateRegionResult(const rvsdg::LambdaNode &lambdaNode) noexcept
rvsdg::SimpleNode * tryGetMemoryStateExitMerge(const rvsdg::LambdaNode &lambdaNode) noexcept
rvsdg::Output & GetMemoryStateRegionArgument(const rvsdg::LambdaNode &lambdaNode) noexcept