ir: fix incoming_{blocks,values,value_for_block}.

This commit is contained in:
whitequark 2015-12-30 16:06:18 +08:00
parent ac3a170c8f
commit 2a474b7166
1 changed files with 5 additions and 3 deletions

View File

@ -242,13 +242,13 @@ class Phi(Instruction):
return return
def incoming_blocks(self): def incoming_blocks(self):
return (block for (block, value) in self.incoming()) return (block for (value, block) in self.incoming())
def incoming_values(self): def incoming_values(self):
return (value for (block, value) in self.incoming()) return (value for (value, block) in self.incoming())
def incoming_value_for_block(self, target_block): def incoming_value_for_block(self, target_block):
for (block, value) in self.incoming(): for (value, block) in self.incoming():
if block == target_block: if block == target_block:
return value return value
assert False assert False
@ -262,12 +262,14 @@ class Phi(Instruction):
def remove_incoming_value(self, value): def remove_incoming_value(self, value):
index = self.operands.index(value) index = self.operands.index(value)
assert index % 2 == 0
self.operands[index].uses.remove(self) self.operands[index].uses.remove(self)
self.operands[index + 1].uses.remove(self) self.operands[index + 1].uses.remove(self)
del self.operands[index:index + 2] del self.operands[index:index + 2]
def remove_incoming_block(self, block): def remove_incoming_block(self, block):
index = self.operands.index(block) index = self.operands.index(block)
assert index % 2 == 1
self.operands[index - 1].uses.remove(self) self.operands[index - 1].uses.remove(self)
self.operands[index].uses.remove(self) self.operands[index].uses.remove(self)
del self.operands[index - 1:index + 1] del self.operands[index - 1:index + 1]