https://github.com/python/cpython/commit/1561385863adb3dca0d554633090bc1d13aab415
commit: 1561385863adb3dca0d554633090bc1d13aab415
branch: main
author: Dino Viehland <[email protected]>
committer: DinoV <[email protected]>
date: 2025-09-08T13:53:12-07:00
summary:
gh-138679: Opcodes which consume no inputs should indicate they produced the
val… (#138678)
Opcodes which consume no inputs should indicate they produced the value, not an
arbitrary local
files:
M Lib/test/test_peepholer.py
M Python/flowgraph.c
diff --git a/Lib/test/test_peepholer.py b/Lib/test/test_peepholer.py
index 98629df457460e..1caf6de4a14e39 100644
--- a/Lib/test/test_peepholer.py
+++ b/Lib/test/test_peepholer.py
@@ -1116,6 +1116,13 @@ def trace(frame, event, arg):
self.assertInBytecode(f, "LOAD_FAST_BORROW")
self.assertNotInBytecode(f, "LOAD_FAST_CHECK")
+ def test_import_from_doesnt_clobber_load_fast_borrow(self):
+ def f(self):
+ if x: pass
+ self.x
+ from shutil import ExecError
+ print(ExecError)
+ self.assertInBytecode(f, "LOAD_FAST_BORROW", "self")
class DirectCfgOptimizerTests(CfgOptimizationTestCase):
diff --git a/Python/flowgraph.c b/Python/flowgraph.c
index 3a29845db9f7f8..18594ca2f44c0f 100644
--- a/Python/flowgraph.c
+++ b/Python/flowgraph.c
@@ -2891,7 +2891,7 @@ optimize_load_fast(cfg_builder *g)
int num_pushed = _PyOpcode_num_pushed(opcode, oparg);
int net_pushed = num_pushed - num_popped;
assert(net_pushed >= 0);
- for (int i = 0; i < net_pushed; i++) {
+ for (int j = 0; j < net_pushed; j++) {
PUSH_REF(i, NOT_LOCAL);
}
break;
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]