Joos1W Compiler Framework
All Classes Functions Typedefs Pages
tir::Instruction Class Reference

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>

Inheritance diagram for tir::Instruction:

Public Member Functions

 Instruction (Context &ctx, tir::Type *resultTy)
 
 Instruction (Context &ctx, tir::Type *resultTy, DataType data)
 
 Instruction (const Instruction &)=delete
 
 Instruction (Instruction &&)=delete
 
Instructionoperator= (const Instruction &)=delete
 
Instructionoperator= (Instruction &&)=delete
 
virtual bool isTerminator () const
 
void insertBefore (Instruction *inst)
 
void insertAfter (Instruction *inst)
 
auto * parent () const
 
Instructionnext () const
 
Instructionprev () 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)
 
- Public Member Functions inherited from tir::User
 User (Context &ctx, Type *type)
 
auto children () const
 
auto numChildren () const
 
ValuegetChild (unsigned idx) const
 
- Public Member Functions inherited from tir::Value
 Value (Context &ctx, Type *type)
 
tir::Contextctx ()
 
auto users ()
 
auto users () const
 
Typetype () 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
 
- Protected Member Functions inherited from tir::User
void addChild (Value *operand)
 
void replaceChild (unsigned idx, Value *operand)
 
void destroy ()
 
bool isDestroyed () const
 

Friends

class BasicBlock
 

Detailed Description

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.


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