10#include <unordered_set>
27 using ArgumentList = std::vector<std::unique_ptr<Use<Value>>>;
43 template <
typename Self>
94 std::unordered_set<const UseBase *>
operands()
const override;
98 std::unique_ptr<Type>
type()
const override {
99 return functionType_->returnType();
111 std::unique_ptr<Value>
clone()
const override;
114 std::unique_ptr<FunctionType> functionType_;
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition IndirectIterator.h:16
Definition IndirectCall.h:26
std::unique_ptr< Type > type() const override
Definition IndirectCall.h:98
IndirectIterator< ArgumentList::iterator, Use< Value > > arg_iterator
Definition IndirectCall.h:30
std::unique_ptr< Value > clone() const override
void accept(InstructionVisitor &visitor) const override
Definition IndirectCall.h:106
auto & callee(this Self &&self)
Definition IndirectCall.h:44
void removeLastArg()
Definition IndirectCall.h:88
IndirectCall(std::unique_ptr< FunctionType > functionType, std::shared_ptr< Value > callee, std::vector< std::shared_ptr< Value > > args={})
size_t arg_size() const
Definition IndirectCall.h:68
void addArg(const_arg_iterator pos, std::shared_ptr< Value > arg)
const Use< Value > & arg(size_t i) const
Definition IndirectCall.h:76
Use< Value > & arg(size_t i)
Definition IndirectCall.h:72
void appendArg(std::shared_ptr< Value > arg)
Definition IndirectCall.h:82
bool arg_empty() const
Definition IndirectCall.h:64
std::unordered_set< const UseBase * > operands() const override
void accept(InstructionVisitor &visitor) override
Definition IndirectCall.h:102
bool isWellFormed() const override
std::string format() const override
void removeArg(const_arg_iterator pos)
arg_iterator arg_end()
Definition IndirectCall.h:52
const_arg_iterator arg_begin() const
Definition IndirectCall.h:56
const_arg_iterator arg_end() const
Definition IndirectCall.h:60
std::unique_ptr< FunctionType > functionType() const
Definition IndirectCall.h:35
void setFunctionType(std::unique_ptr< FunctionType > functionType)
Definition IndirectCall.h:39
arg_iterator arg_begin()
Definition IndirectCall.h:48
IndirectIterator< ArgumentList::const_iterator, const Use< Value > > const_arg_iterator
Definition IndirectCall.h:31
Definition InstructionVisitor.h:58
virtual void visitIndirectCall(IndirectCall &I)
Definition InstructionVisitor.h:91
Definition Instruction.h:22
std::unique_ptr< FunctionType > functionType(const Call &I)
Definition Call.h:110
auto args(Function &F)
Definition Function.h:262
std::unique_ptr< To > cast(std::unique_ptr< From > from) noexcept
Definition Memory.h:10