https://github.com/python/cpython/commit/b0fb074d5983f07517cec76a37268f13c986d314
commit: b0fb074d5983f07517cec76a37268f13c986d314
branch: main
author: Brandt Bucher <brandtbuc...@microsoft.com>
committer: brandtbucher <brandtbuc...@gmail.com>
date: 2024-01-02T14:09:57-08:00
summary:

GH-113657: Add back missing _SET_IP uops in tier two (GH-113662)

files:
A Misc/NEWS.d/next/Core and 
Builtins/2024-01-02-11-14-29.gh-issue-113657.CQo9vF.rst
M Python/optimizer_analysis.c

diff --git a/Misc/NEWS.d/next/Core and 
Builtins/2024-01-02-11-14-29.gh-issue-113657.CQo9vF.rst b/Misc/NEWS.d/next/Core 
and Builtins/2024-01-02-11-14-29.gh-issue-113657.CQo9vF.rst
new file mode 100644
index 00000000000000..b520b5c2529425
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and 
Builtins/2024-01-02-11-14-29.gh-issue-113657.CQo9vF.rst 
@@ -0,0 +1,2 @@
+Fix an issue that caused important instruction pointer updates to be
+optimized out of tier two traces.
diff --git a/Python/optimizer_analysis.c b/Python/optimizer_analysis.c
index 8b471d70a10d7d..4eb2d9711f5e56 100644
--- a/Python/optimizer_analysis.c
+++ b/Python/optimizer_analysis.c
@@ -4,6 +4,7 @@
 #include "pycore_opcode_metadata.h"
 #include "pycore_opcode_utils.h"
 #include "pycore_pystate.h"       // _PyInterpreterState_GET()
+#include "pycore_uop_metadata.h"
 #include "pycore_uops.h"
 #include "pycore_long.h"
 #include "cpython/optimizer.h"
@@ -35,13 +36,13 @@ remove_unneeded_uops(_PyUOpInstruction *buffer, int 
buffer_size)
             break;
         }
         else {
-            if (OPCODE_HAS_ESCAPES(opcode)) {
+            if (_PyUop_Flags[opcode] & HAS_ESCAPES_FLAG) {
                 maybe_invalid = true;
                 if (last_set_ip >= 0) {
                     buffer[last_set_ip].opcode = _SET_IP;
                 }
             }
-            if (OPCODE_HAS_ERROR(opcode) || opcode == _PUSH_FRAME) {
+            if ((_PyUop_Flags[opcode] & HAS_ERROR_FLAG) || opcode == 
_PUSH_FRAME) {
                 if (last_set_ip >= 0) {
                     buffer[last_set_ip].opcode = _SET_IP;
                 }

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to