17 std::shared_ptr<const jlm::rvsdg::FunctionType>
type,
21 : rvsdg::LambdaOperation(std::move(
type)),
22 name_(std::move(name)),
24 attributes_(std::move(attributes))
39 return op && op->
type() ==
type() && op->name() == name() && op->linkage() == linkage()
40 && op->attributes() == attributes();
43 std::unique_ptr<rvsdg::Operation>
46 return std::make_unique<LlvmLambdaOperation>(*
this);
52 JLM_ASSERT(index < ArgumentAttributes_.size());
53 return ArgumentAttributes_[index];
68 JLM_ASSERT(is<LlvmLambdaOperation>(&lambdaNode));
69 const auto functionArguments = lambdaNode.GetFunctionArguments();
70 const auto ioStateArgument = functionArguments[functionArguments.size() - 2];
71 JLM_ASSERT(is<IOStateType>(ioStateArgument->Type()));
72 return *ioStateArgument;
LlvmLambdaOperation(std::shared_ptr< const jlm::rvsdg::FunctionType > type, std::string name, const jlm::llvm::Linkage &linkage, jlm::llvm::AttributeSet attributes)
std::unique_ptr< Operation > copy() const override
std::vector< jlm::llvm::AttributeSet > ArgumentAttributes_
static rvsdg::Output & getIOStateArgument(const rvsdg::LambdaNode &lambdaNode) noexcept
~LlvmLambdaOperation() override
std::string debug_string() const override
void SetArgumentAttributes(std::size_t index, const jlm::llvm::AttributeSet &attributes)
bool operator==(const Operation &other) const noexcept override
const std::string & name() const noexcept
const jlm::llvm::AttributeSet & GetArgumentAttributes(std::size_t index) const noexcept
const jlm::llvm::AttributeSet & attributes() const noexcept
const FunctionType & type() const noexcept
const std::shared_ptr< const FunctionType > & Type() const noexcept
Global memory state passed between functions.
static std::string type(const Node *n)
static std::string strfmt(Args... args)