Skip to content

Commit 26a5856

Browse files
committed
Fix bug with -O3 and local vars
1 parent 8eb893b commit 26a5856

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

src/arch/zx48k/optimizer/cpustate.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,6 +687,7 @@ def execute(self, asm_code):
687687

688688
if i == 'neg':
689689
if self.getv('a') is None:
690+
self.set('a', None)
690691
self.set_flag(None)
691692
return
692693

tests/arch/zx48k/optimizer/test_cpustate.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ def _eval(self, code):
1818
def regs(self):
1919
return self.cpu_state.regs
2020

21+
@property
22+
def mem(self):
23+
return self.cpu_state.mem
24+
2125
def test_cpu_state_ld_a_unknown(self):
2226
code = """
2327
ld a, (_N)
@@ -384,3 +388,11 @@ def test_neg_z(self):
384388
self.assertEqual(self.regs['a'], str(0))
385389
self.assertEqual(self.cpu_state.C, 0)
386390
self.assertEqual(self.cpu_state.Z, 1)
391+
392+
def test_ix_neg(self):
393+
code = """
394+
ld a, (ix-1)
395+
neg
396+
"""
397+
self._eval(code)
398+
self.assertNotEqual(self.regs['a'], self.mem['ix-1'])

0 commit comments

Comments
 (0)