summaryrefslogtreecommitdiff
path: root/willow/lib/IR/Instruction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'willow/lib/IR/Instruction.cpp')
-rw-r--r--willow/lib/IR/Instruction.cpp12
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) {