diff options
Diffstat (limited to 'willow/lib/IR/Instruction.cpp')
| -rw-r--r-- | willow/lib/IR/Instruction.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/willow/lib/IR/Instruction.cpp b/willow/lib/IR/Instruction.cpp index a6e0c9b..517b6f9 100644 --- a/willow/lib/IR/Instruction.cpp +++ b/willow/lib/IR/Instruction.cpp @@ -34,6 +34,18 @@ bool Instruction::isTerminatorOp(Opcode op) { } } +void Instruction::setOperand(std::size_t index, Value *operand) { + assert(index < operands.size() && "Operand index out of bounds"); + assert(operand && "Operand cannot be null"); + Value *old = operands[index]; + if (old == operand) + return; + + old->delUse(this); + operands[index] = operand; + operand->addUse(this); +} + Successors Instruction::succs() { using enum Opcode; switch (op) { |