From 0bf425eefa601ef06f4bbc86bfe0436feab45d6d Mon Sep 17 00:00:00 2001 From: whitequark Date: Mon, 23 Nov 2015 19:18:58 +0800 Subject: [PATCH] compiler.ir: maintain use lists while mutating instructions. --- artiq/compiler/ir.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/artiq/compiler/ir.py b/artiq/compiler/ir.py index 4d29e1529..e7756e73b 100644 --- a/artiq/compiler/ir.py +++ b/artiq/compiler/ir.py @@ -964,7 +964,9 @@ class Branch(Terminator): return self.operands[0] def set_target(self, new_target): + self.operands[0].uses.remove(self) self.operands[0] = new_target + self.operands[0].uses.add(self) class BranchIf(Terminator): """ @@ -1231,11 +1233,18 @@ class Delay(Terminator): def decomposition(self): return self.operands[0] + def set_decomposition(self, new_decomposition): + self.operands[0].uses.remove(self) + self.operands[0] = new_decomposition + self.operands[0].uses.add(self) + def target(self): return self.operands[1] def set_target(self, new_target): + self.operands[1].uses.remove(self) self.operands[1] = new_target + self.operands[1].uses.add(self) def substs(self): return zip(self.var_names, self.operands[2:])