forked from M-Labs/artiq
1
0
Fork 0

compiler.ir: maintain use lists while mutating instructions.

This commit is contained in:
whitequark 2015-11-23 19:18:58 +08:00
parent 03b4e4027c
commit 0bf425eefa
1 changed files with 9 additions and 0 deletions

View File

@ -964,7 +964,9 @@ class Branch(Terminator):
return self.operands[0] return self.operands[0]
def set_target(self, new_target): def set_target(self, new_target):
self.operands[0].uses.remove(self)
self.operands[0] = new_target self.operands[0] = new_target
self.operands[0].uses.add(self)
class BranchIf(Terminator): class BranchIf(Terminator):
""" """
@ -1231,11 +1233,18 @@ class Delay(Terminator):
def decomposition(self): def decomposition(self):
return self.operands[0] 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): def target(self):
return self.operands[1] return self.operands[1]
def set_target(self, new_target): def set_target(self, new_target):
self.operands[1].uses.remove(self)
self.operands[1] = new_target self.operands[1] = new_target
self.operands[1].uses.add(self)
def substs(self): def substs(self):
return zip(self.var_names, self.operands[2:]) return zip(self.var_names, self.operands[2:])