Joos1W Compiler Framework
|
Base class for all instructions in the TIR. Instructions are also Values, but they are not constants. Instructions are stored as a linked list, possibly belonging to a BasicBlock, or not. Instructions are also Users, meaning they can have other Values as operands (children). More...
#include <Instructions.h>
Public Member Functions | |
Instruction (Context &ctx, tir::Type *resultTy) | |
Instruction (Context &ctx, tir::Type *resultTy, DataType data) | |
Instruction (const Instruction &)=delete | |
Instruction (Instruction &&)=delete | |
Instruction & | operator= (const Instruction &)=delete |
Instruction & | operator= (Instruction &&)=delete |
virtual bool | isTerminator () const |
void | insertBefore (Instruction *inst) |
void | insertAfter (Instruction *inst) |
auto * | parent () const |
Instruction * | next () const |
Instruction * | prev () const |
auto | nextIter () |
auto | prevIter () |
auto | iter () |
void | eraseFromParent (bool keep=false) |
Removes this instruction from its parent BB if it exists. Also will unlink this instruction from the list, re-linking the previous and next instructions. | |
void | setParent (BasicBlock *parent) |
![]() | |
User (Context &ctx, Type *type) | |
auto | children () const |
auto | numChildren () const |
Value * | getChild (unsigned idx) const |
![]() | |
Value (Context &ctx, Type *type) | |
tir::Context & | ctx () |
auto | users () |
auto | users () const |
Type * | type () const |
void | addUser (User *user) |
void | removeUser (User *user) |
std::string_view | name () const |
auto | nameOpt () const |
void | replaceAllUsesWith (Value *newValue) |
void | setName (std::string_view name) |
std::ostream & | printName (std::ostream &os) const |
virtual std::ostream & | print (std::ostream &) const =0 |
void | dump () const |
Protected Types | |
using | DataType = std::variant< BinOp, Predicate, CastOp, Type *, StructType * > |
Protected Member Functions | |
template<typename T > | |
constexpr T const & | get () const |
![]() | |
void | addChild (Value *operand) |
void | replaceChild (unsigned idx, Value *operand) |
void | destroy () |
bool | isDestroyed () const |
Friends | |
class | BasicBlock |
Base class for all instructions in the TIR. Instructions are also Values, but they are not constants. Instructions are stored as a linked list, possibly belonging to a BasicBlock, or not. Instructions are also Users, meaning they can have other Values as operands (children).
Definition at line 26 of file Instructions.h.