6 #ifndef JLM_LLVM_IR_OPERATORS_FUNCTIONPOINTER_HPP
7 #define JLM_LLVM_IR_OPERATORS_FUNCTIONPOINTER_HPP
28 operator==(
const Operation & other)
const noexcept
override;
30 [[nodiscard]] std::string
33 [[nodiscard]] std::unique_ptr<Operation>
34 copy()
const override;
42 static std::unique_ptr<FunctionToPointerOperation>
43 Create(std::shared_ptr<const rvsdg::FunctionType> fn);
45 inline const std::shared_ptr<const jlm::rvsdg::FunctionType> &
66 operator==(
const Operation & other)
const noexcept
override;
68 [[nodiscard]] std::string
71 [[nodiscard]] std::unique_ptr<rvsdg::Operation>
72 copy()
const override;
80 static std::unique_ptr<PointerToFunctionOperation>
81 Create(std::shared_ptr<const rvsdg::FunctionType> fn);
83 inline const std::shared_ptr<const rvsdg::FunctionType> &
Get address of compiled function object.
std::unique_ptr< Operation > copy() const override
std::string debug_string() const override
bool operator==(const Operation &other) const noexcept override
std::shared_ptr< const rvsdg::FunctionType > FunctionType_
static std::unique_ptr< FunctionToPointerOperation > Create(std::shared_ptr< const rvsdg::FunctionType > fn)
FunctionToPointerOperation(std::shared_ptr< const rvsdg::FunctionType > fn)
~FunctionToPointerOperation() noexcept override
rvsdg::unop_reduction_path_t can_reduce_operand(const jlm::rvsdg::Output *arg) const noexcept override
jlm::rvsdg::Output * reduce_operand(rvsdg::unop_reduction_path_t path, jlm::rvsdg::Output *arg) const override
const std::shared_ptr< const jlm::rvsdg::FunctionType > & FunctionType() const noexcept
Interpret pointer as callable function.
std::string debug_string() const override
PointerToFunctionOperation(std::shared_ptr< const rvsdg::FunctionType > fn)
std::unique_ptr< rvsdg::Operation > copy() const override
const std::shared_ptr< const rvsdg::FunctionType > & FunctionType() const noexcept
bool operator==(const Operation &other) const noexcept override
jlm::rvsdg::Output * reduce_operand(rvsdg::unop_reduction_path_t path, jlm::rvsdg::Output *arg) const override
rvsdg::unop_reduction_path_t can_reduce_operand(const jlm::rvsdg::Output *arg) const noexcept override
~PointerToFunctionOperation() noexcept override
static std::unique_ptr< PointerToFunctionOperation > Create(std::shared_ptr< const rvsdg::FunctionType > fn)
std::shared_ptr< const rvsdg::FunctionType > FunctionType_
Global memory state passed between functions.
size_t unop_reduction_path_t