gh-120367: fix removal of redundant NOPs and jumps after reordering hot-cold blocks (#120425)

This commit is contained in:
Irit Katriel 2024-06-17 11:10:06 +01:00 committed by GitHub
parent c2d5df5787
commit 21866c8ed2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 47 additions and 12 deletions

View file

@ -502,6 +502,33 @@ class TestSpecifics(unittest.TestCase):
with self.assertRaisesRegex(TypeError, "NamedExpr target must be a Name"):
compile(ast.fix_missing_locations(m), "<file>", "exec")
def test_compile_redundant_jumps_and_nops_after_moving_cold_blocks(self):
# See gh-120367
code=textwrap.dedent("""
try:
pass
except:
pass
else:
match name_2:
case b'':
pass
finally:
something
""")
tree = ast.parse(code)
# make all instructions locations the same to create redundancies
for node in ast.walk(tree):
if hasattr(node,"lineno"):
del node.lineno
del node.end_lineno
del node.col_offset
del node.end_col_offset
compile(ast.fix_missing_locations(tree), "<file>", "exec")
def test_compile_ast(self):
fname = __file__
if fname.lower().endswith('pyc'):