diff options
author | Peter Wu <lekensteyn@gmail.com> | 2011-12-07 13:23:45 +0000 |
---|---|---|
committer | Peter Wu <lekensteyn@gmail.com> | 2011-12-07 13:23:45 +0000 |
commit | adc7e31507e3f6a9f3f4d7b0d513b7a74b82a701 (patch) | |
tree | 37c28b0896464508323e7e2ad3f5deda40a594a8 /pp2cc.py | |
parent | 134d1ee7aa3eca21d5dd697e7d405cd9424b9dd4 (diff) | |
download | pp2cc-adc7e31507e3f6a9f3f4d7b0d513b7a74b82a701.tar.gz |
Fix result of ternary expression
Diffstat (limited to 'pp2cc.py')
-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): |