mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
[3.13] gh-120367: fix removal of redundant NOPs and jumps after reordering hot-cold blocks (GH-120425) (#120621)
gh-120367: fix removal of redundant NOPs and jumps after reordering hot-cold blocks (GH-120425)
(cherry picked from commit 21866c8ed2
)
Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
This commit is contained in:
parent
7c47f93dff
commit
61a2229005
3 changed files with 47 additions and 12 deletions
|
@ -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'):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue