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]

Reply via email to