We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 206f13d commit 764a219Copy full SHA for 764a219
2 files changed
arch/zx48k/optimizer/memcell.py
@@ -295,12 +295,12 @@ def requires(self):
295
296
elif i == 'out':
297
result.add(o[1])
298
- if o[0] == '(c)':
299
- result.add('c')
+ if o[0] == 'c':
+ result.update('b', 'c')
300
301
elif i == 'in':
302
- if o[1] == '(c)':
303
+ if o[1] == 'c':
304
305
elif i == 'im':
306
result.add('i')
tests/arch/zx48k/backend/test_memcell.py
@@ -129,3 +129,25 @@ def test_requires_xor_a(self):
129
c = memcell.MemCell('xor a', 1)
130
self.assertSetEqual(c.requires, set())
131
self.assertSetEqual(c.destroys, {'a', 'f'})
132
+
133
+ def test_require_out(self):
134
+ """ Test requires for out(c), a instruction
135
+ """
136
+ c = memcell.MemCell('out (c), a', 1)
137
+ self.assertSetEqual(c.requires, {'a', 'b', 'c'})
138
+ self.assertSetEqual(c.destroys, set())
139
140
+ c = memcell.MemCell('out (c), d', 1)
141
+ self.assertSetEqual(c.requires, {'d', 'b', 'c'})
142
143
144
+ def test_require_in(self):
145
146
147
+ c = memcell.MemCell('in a, (c)', 1)
148
+ self.assertSetEqual(c.requires, {'b', 'c'})
149
+ self.assertSetEqual(c.destroys, {'a'})
150
151
+ c = memcell.MemCell('in d, (c)', 1)
152
153
+ self.assertSetEqual(c.destroys, {'d'})
0 commit comments