mini-llvm 0.1.0
Loading...
Searching...
No Matches
mini_llvm::ir::IndirectCall Class Reference

#include <IndirectCall.h>

Inheritance diagram for mini_llvm::ir::IndirectCall:
Collaboration diagram for mini_llvm::ir::IndirectCall:

Public Types

using arg_iterator = IndirectIterator<ArgumentList::iterator, Use<Value>>
using const_arg_iterator = IndirectIterator<ArgumentList::const_iterator, const Use<Value>>
Public Types inherited from mini_llvm::ir::Value
using use_iterator = IndirectIterator<UseSet::iterator, UseBase>

Public Member Functions

 IndirectCall (std::unique_ptr< FunctionType > functionType, std::shared_ptr< Value > callee, std::vector< std::shared_ptr< Value > > args={})
std::unique_ptr< FunctionTypefunctionType () const
void setFunctionType (std::unique_ptr< FunctionType > functionType)
template<typename Self>
auto & callee (this Self &&self)
arg_iterator arg_begin ()
arg_iterator arg_end ()
const_arg_iterator arg_begin () const
const_arg_iterator arg_end () const
bool arg_empty () const
size_t arg_size () const
Use< Value > & arg (size_t i)
const Use< Value > & arg (size_t i) const
void addArg (const_arg_iterator pos, std::shared_ptr< Value > arg)
void appendArg (std::shared_ptr< Value > arg)
void removeArg (const_arg_iterator pos)
void removeLastArg ()
void clearArgs ()
std::unordered_set< const UseBase * > operands () const override
bool isWellFormed () const override
std::unique_ptr< Typetype () const override
void accept (InstructionVisitor &visitor) override
void accept (InstructionVisitor &visitor) const override
std::string format () const override
std::unique_ptr< Valueclone () const override
Public Member Functions inherited from mini_llvm::ir::Instruction
BasicBlockparent () const
BasicBlock::iterator parentIterator () const
std::unordered_set< UseBase * > operands ()
virtual bool isFoldable () const
virtual std::shared_ptr< Constantfold () const
bool isWellFormed () const override
std::string formatAsOperand () const override
Public Member Functions inherited from mini_llvm::ir::Value
virtual ~Value ()=default
 Value ()=default
 Value (const Value &)=delete
Valueoperator= (const Value &)=delete
 Value (Value &&)=delete
Valueoperator= (Value &&)=delete
const std::string & name () const &
std::string && name () &&
void setName (std::string name)
std::string formatName () const
use_iterator use_begin () const
use_iterator use_end () const
bool use_empty () const
size_t use_size () const

Member Typedef Documentation

◆ arg_iterator

◆ const_arg_iterator

using mini_llvm::ir::IndirectCall::const_arg_iterator = IndirectIterator<ArgumentList::const_iterator, const Use<Value>>

Constructor & Destructor Documentation

◆ IndirectCall()

mini_llvm::ir::IndirectCall::IndirectCall ( std::unique_ptr< FunctionType > functionType,
std::shared_ptr< Value > callee,
std::vector< std::shared_ptr< Value > > args = {} )

Member Function Documentation

◆ accept() [1/2]

void mini_llvm::ir::IndirectCall::accept ( InstructionVisitor & visitor) const
inlineoverridevirtual

◆ accept() [2/2]

void mini_llvm::ir::IndirectCall::accept ( InstructionVisitor & visitor)
inlineoverridevirtual

◆ addArg()

void mini_llvm::ir::IndirectCall::addArg ( const_arg_iterator pos,
std::shared_ptr< Value > arg )

◆ appendArg()

void mini_llvm::ir::IndirectCall::appendArg ( std::shared_ptr< Value > arg)
inline

◆ arg() [1/2]

Use< Value > & mini_llvm::ir::IndirectCall::arg ( size_t i)
inline

◆ arg() [2/2]

const Use< Value > & mini_llvm::ir::IndirectCall::arg ( size_t i) const
inline

◆ arg_begin() [1/2]

arg_iterator mini_llvm::ir::IndirectCall::arg_begin ( )
inline

◆ arg_begin() [2/2]

const_arg_iterator mini_llvm::ir::IndirectCall::arg_begin ( ) const
inline

◆ arg_empty()

bool mini_llvm::ir::IndirectCall::arg_empty ( ) const
inline

◆ arg_end() [1/2]

arg_iterator mini_llvm::ir::IndirectCall::arg_end ( )
inline

◆ arg_end() [2/2]

const_arg_iterator mini_llvm::ir::IndirectCall::arg_end ( ) const
inline

◆ arg_size()

size_t mini_llvm::ir::IndirectCall::arg_size ( ) const
inline

◆ callee()

template<typename Self>
auto & mini_llvm::ir::IndirectCall::callee ( this Self && self)
inline

◆ clearArgs()

void mini_llvm::ir::IndirectCall::clearArgs ( )

◆ clone()

std::unique_ptr< Value > mini_llvm::ir::IndirectCall::clone ( ) const
overridevirtual

Implements mini_llvm::ir::Value.

◆ format()

std::string mini_llvm::ir::IndirectCall::format ( ) const
overridevirtual

Implements mini_llvm::ir::Value.

◆ functionType()

std::unique_ptr< FunctionType > mini_llvm::ir::IndirectCall::functionType ( ) const
inline

◆ isWellFormed()

bool mini_llvm::ir::IndirectCall::isWellFormed ( ) const
overridevirtual

Reimplemented from mini_llvm::ir::Value.

◆ operands()

std::unordered_set< const UseBase * > mini_llvm::ir::IndirectCall::operands ( ) const
overridevirtual

◆ removeArg()

void mini_llvm::ir::IndirectCall::removeArg ( const_arg_iterator pos)

◆ removeLastArg()

void mini_llvm::ir::IndirectCall::removeLastArg ( )
inline

◆ setFunctionType()

void mini_llvm::ir::IndirectCall::setFunctionType ( std::unique_ptr< FunctionType > functionType)
inline

◆ type()

std::unique_ptr< Type > mini_llvm::ir::IndirectCall::type ( ) const
inlineoverridevirtual

Implements mini_llvm::ir::Value.


The documentation for this class was generated from the following file: