diff options
-rwxr-xr-x | pp2cc.py | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -602,10 +602,6 @@ class Parse(object): # else... else_block = self.parseExpression(node.iffalse, linked_node) assert len(else_block), "Else block is empty" - result_reg_else = self.registers.find_register(else_block, fatal=True) - # for consistency with the result of expr_true - if result_reg_else != result_reg: - lines.append(self.asm.binary_op("LOAD", result_reg, result_reg_else)) # add labels for the else block if self.asm.has_label(else_block[0]): lines.append(self.asm.noop(lbl_el)) @@ -613,6 +609,11 @@ class Parse(object): else_block[0] = self.asm.insert_label(else_block[0], lbl_el) lines += else_block + result_reg_else = self.registers.find_register(else_block, fatal=True) + # for consistency with the result of expr_true + if result_reg_else != result_reg: + lines.append(self.asm.binary_op("LOAD", result_reg, result_reg_else)) + lines.append(self.asm.noop(lbl_end, register=result_reg)) return lines def convertInteger(self, value=None, node=None): |