|
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) |
Public Member Functions inherited from tir::User | |
| User (Context &ctx, Type *type) | |
| auto | children () const |
| auto | numChildren () const |
| Value * | getChild (unsigned idx) const |
Public Member Functions inherited from tir::Value | |
| 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 |
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 |
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.