From adc7e31507e3f6a9f3f4d7b0d513b7a74b82a701 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Wed, 7 Dec 2011 13:23:45 +0000 Subject: Fix result of ternary expression --- pp2cc.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pp2cc.py b/pp2cc.py index 60aaa48..684fddb 100755 --- a/pp2cc.py +++ b/pp2cc.py @@ -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): -- cgit v1.2.1