gh-93554: add test for quickening of code in loops ending with conditional statement (#119485)

This commit is contained in:
Irit Katriel 2024-05-29 11:44:04 +01:00 committed by GitHub
parent 18c1a8d3a8
commit 016a46ab57
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 30 additions and 0 deletions

View File

@ -1207,6 +1207,36 @@ class DisTests(DisTestBase):
expected = dis_loop_test_quickened_code expected = dis_loop_test_quickened_code
self.do_disassembly_compare(got, expected) self.do_disassembly_compare(got, expected)
@cpython_only
@requires_specialization
def test_loop_with_conditional_at_end_is_quickened(self):
def for_loop_true(x):
for i in range(10):
if x:
pass
for_loop_true(True)
self.assertIn('FOR_ITER_RANGE',
self.get_disassembly(for_loop_true, adaptive=True))
def for_loop_false(x):
for i in range(10):
if x:
pass
for_loop_false(False)
self.assertIn('FOR_ITER_RANGE',
self.get_disassembly(for_loop_false, adaptive=True))
def while_loop():
i = 0
while i < 10:
i += 1
while_loop()
self.assertIn('COMPARE_OP_INT',
self.get_disassembly(while_loop, adaptive=True))
@cpython_only @cpython_only
def test_extended_arg_quick(self): def test_extended_arg_quick(self):
got = self.get_disassembly(extended_arg_quick) got = self.get_disassembly(extended_arg_quick)