From 1bd649ed3d94fb424f42c7168449b204e87e7b95 Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Sun, 12 Apr 2026 21:25:16 -0400 Subject: [PATCH 01/10] Use Py_GCC_ATTRIBUTE(unused) for stop_tracing label --- Tools/cases_generator/tier1_generator.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Tools/cases_generator/tier1_generator.py b/Tools/cases_generator/tier1_generator.py index 0334bec724d305..df721e75b1031e 100644 --- a/Tools/cases_generator/tier1_generator.py +++ b/Tools/cases_generator/tier1_generator.py @@ -203,6 +203,8 @@ def generate_tier1_labels( emitter.emit("\n") # Emit tail-callable labels as function defintions for name, label in analysis.labels.items(): + if name == 'stop_tracing': + emitter.emit("Py_GCC_ATTRIBUTE((unused)) \n") emitter.emit(f"LABEL({name})\n") storage = Storage(Stack(), [], [], 0, False) if label.spilled: From d629c8261e706c68fafa63489bf101a57ca1f35a Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 13 Apr 2026 02:05:17 +0000 Subject: [PATCH 02/10] Actually regenerate the generated files to include attribute --- Modules/_testinternalcapi/test_cases.c.h | 1 + Python/generated_cases.c.h | 1 + 2 files changed, 2 insertions(+) diff --git a/Modules/_testinternalcapi/test_cases.c.h b/Modules/_testinternalcapi/test_cases.c.h index 5ed7d7be41bf3f..be1cf02588aded 100644 --- a/Modules/_testinternalcapi/test_cases.c.h +++ b/Modules/_testinternalcapi/test_cases.c.h @@ -12943,6 +12943,7 @@ JUMP_TO_LABEL(error); DISPATCH(); } + Py_GCC_ATTRIBUTE((unused)) LABEL(stop_tracing) { #if _Py_TIER2 diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 6aa6fe445a2f88..0b8fa222143fcd 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -12940,6 +12940,7 @@ JUMP_TO_LABEL(error); DISPATCH(); } + Py_GCC_ATTRIBUTE((unused)) LABEL(stop_tracing) { #if _Py_TIER2 From 25b044589fde29404fa961de7b0037bbcc966550 Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 13 Apr 2026 02:33:14 +0000 Subject: [PATCH 03/10] Wrap attribyte with _Py_TAIL_CALL_INTERP macro check --- .gitignore | 1 + Modules/_testinternalcapi/test_cases.c.h | 2 ++ Python/generated_cases.c.h | 2 ++ Tools/cases_generator/tier1_generator.py | 2 ++ 4 files changed, 7 insertions(+) diff --git a/.gitignore b/.gitignore index f9d2cdfc32b383..3bf5187d531c23 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ *.cover *.iml *.o +*.o.tmp *.lto *.a *.so diff --git a/Modules/_testinternalcapi/test_cases.c.h b/Modules/_testinternalcapi/test_cases.c.h index be1cf02588aded..b8164f88f464ce 100644 --- a/Modules/_testinternalcapi/test_cases.c.h +++ b/Modules/_testinternalcapi/test_cases.c.h @@ -12943,7 +12943,9 @@ JUMP_TO_LABEL(error); DISPATCH(); } + #if _Py_TAIL_CALL_INTERP Py_GCC_ATTRIBUTE((unused)) + #endif LABEL(stop_tracing) { #if _Py_TIER2 diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 0b8fa222143fcd..f7ee0442242d28 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -12940,7 +12940,9 @@ JUMP_TO_LABEL(error); DISPATCH(); } + #if _Py_TAIL_CALL_INTERP Py_GCC_ATTRIBUTE((unused)) + #endif LABEL(stop_tracing) { #if _Py_TIER2 diff --git a/Tools/cases_generator/tier1_generator.py b/Tools/cases_generator/tier1_generator.py index df721e75b1031e..002bea0ba18453 100644 --- a/Tools/cases_generator/tier1_generator.py +++ b/Tools/cases_generator/tier1_generator.py @@ -204,7 +204,9 @@ def generate_tier1_labels( # Emit tail-callable labels as function defintions for name, label in analysis.labels.items(): if name == 'stop_tracing': + emitter.emit("#if _Py_TAIL_CALL_INTERP\n") emitter.emit("Py_GCC_ATTRIBUTE((unused)) \n") + emitter.emit("#endif\n") emitter.emit(f"LABEL({name})\n") storage = Storage(Stack(), [], [], 0, False) if label.spilled: From 30924f4ce7e823b5f0eb1d39e1da7e02d86c7e79 Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 02:36:16 +0000 Subject: [PATCH 04/10] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20b?= =?UTF-8?q?lurb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst diff --git a/Misc/NEWS.d/next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst b/Misc/NEWS.d/next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst new file mode 100644 index 00000000000000..4698c49e8742e1 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst @@ -0,0 +1 @@ +Use Py_GCC_ATTRIBUTE(unused) for stop_tracing label From 67d3971ed64998115b4e2c6abea35b405e9fba87 Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 13 Apr 2026 02:40:23 +0000 Subject: [PATCH 05/10] Space --- Tools/cases_generator/tier1_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/cases_generator/tier1_generator.py b/Tools/cases_generator/tier1_generator.py index 002bea0ba18453..9bb44246be1868 100644 --- a/Tools/cases_generator/tier1_generator.py +++ b/Tools/cases_generator/tier1_generator.py @@ -205,7 +205,7 @@ def generate_tier1_labels( for name, label in analysis.labels.items(): if name == 'stop_tracing': emitter.emit("#if _Py_TAIL_CALL_INTERP\n") - emitter.emit("Py_GCC_ATTRIBUTE((unused)) \n") + emitter.emit("Py_GCC_ATTRIBUTE((unused))\n") emitter.emit("#endif\n") emitter.emit(f"LABEL({name})\n") storage = Storage(Stack(), [], [], 0, False) From ff754716bf1c9b089014c93f4988e3c07757df9b Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 13 Apr 2026 02:43:28 +0000 Subject: [PATCH 06/10] Regen --- Modules/_testinternalcapi/test_cases.c.h | 2 +- Python/generated_cases.c.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/_testinternalcapi/test_cases.c.h b/Modules/_testinternalcapi/test_cases.c.h index b8164f88f464ce..2ef8ce99328b36 100644 --- a/Modules/_testinternalcapi/test_cases.c.h +++ b/Modules/_testinternalcapi/test_cases.c.h @@ -12944,7 +12944,7 @@ JUMP_TO_LABEL(error); } #if _Py_TAIL_CALL_INTERP - Py_GCC_ATTRIBUTE((unused)) + Py_GCC_ATTRIBUTE((unused)) #endif LABEL(stop_tracing) { diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index f7ee0442242d28..7c18c7ed6af9c2 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -12941,7 +12941,7 @@ JUMP_TO_LABEL(error); } #if _Py_TAIL_CALL_INTERP - Py_GCC_ATTRIBUTE((unused)) + Py_GCC_ATTRIBUTE((unused)) #endif LABEL(stop_tracing) { From cda01d600263fcbce2065cf1e01cf0f9002df6ec Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 13 Apr 2026 08:01:17 -0400 Subject: [PATCH 07/10] Update conditional compilation for tail-call labels --- Tools/cases_generator/tier1_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/cases_generator/tier1_generator.py b/Tools/cases_generator/tier1_generator.py index 9bb44246be1868..d2fa749e1417f5 100644 --- a/Tools/cases_generator/tier1_generator.py +++ b/Tools/cases_generator/tier1_generator.py @@ -204,7 +204,7 @@ def generate_tier1_labels( # Emit tail-callable labels as function defintions for name, label in analysis.labels.items(): if name == 'stop_tracing': - emitter.emit("#if _Py_TAIL_CALL_INTERP\n") + emitter.emit("#if _Py_TAIL_CALL_INTERP && !defined(_Py_TIER2)\n") emitter.emit("Py_GCC_ATTRIBUTE((unused))\n") emitter.emit("#endif\n") emitter.emit(f"LABEL({name})\n") From 4949861147c15c96bad91abf53f33f91d24ff76a Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 13 Apr 2026 08:01:53 -0400 Subject: [PATCH 08/10] Update conditional compilation for tail call interpreter --- Modules/_testinternalcapi/test_cases.c.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/_testinternalcapi/test_cases.c.h b/Modules/_testinternalcapi/test_cases.c.h index 2ef8ce99328b36..041adcff388a41 100644 --- a/Modules/_testinternalcapi/test_cases.c.h +++ b/Modules/_testinternalcapi/test_cases.c.h @@ -12943,7 +12943,7 @@ JUMP_TO_LABEL(error); DISPATCH(); } - #if _Py_TAIL_CALL_INTERP + #if _Py_TAIL_CALL_INTERP && !defined(_Py_TIER2) Py_GCC_ATTRIBUTE((unused)) #endif LABEL(stop_tracing) From aaba401a9f79f754357a602a2f5b09f1e92b04e4 Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 13 Apr 2026 08:02:17 -0400 Subject: [PATCH 09/10] Modify conditional compilation for tail call interp --- Python/generated_cases.c.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 7c18c7ed6af9c2..ae01925077c29e 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -12940,7 +12940,7 @@ JUMP_TO_LABEL(error); DISPATCH(); } - #if _Py_TAIL_CALL_INTERP + #if _Py_TAIL_CALL_INTERP && !defined(_Py_TIER2) Py_GCC_ATTRIBUTE((unused)) #endif LABEL(stop_tracing) From b082a45d358cb4f369552288e4e2962f15a64e98 Mon Sep 17 00:00:00 2001 From: Charlie Lin Date: Mon, 13 Apr 2026 08:08:55 -0400 Subject: [PATCH 10/10] Update Misc/NEWS.d/next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst Co-authored-by: Ken Jin --- .../next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst b/Misc/NEWS.d/next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst index 4698c49e8742e1..5b9b3069887580 100644 --- a/Misc/NEWS.d/next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst +++ b/Misc/NEWS.d/next/Build/2026-04-13-02-36-13.gh-issue-148483.gLe1h8.rst @@ -1 +1 @@ -Use Py_GCC_ATTRIBUTE(unused) for stop_tracing label +Use ``Py_GCC_ATTRIBUTE(unused)`` for stop_tracing label.