From bc2ba6fc68cb8d53d358b6ac0a45e250320c9987 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Date: Sat, 13 Dec 2025 14:15:10 +0000 Subject: [PATCH] [3.13] gh-141808: Don't remove the JIT stencils when building with PGO (GH-141809) (GH-142657) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See: https://discuss.python.org/t/building-the-jit-with-pre-built-stencils/91838/12 (cherry picked from commit 8914148151c957aebfaab1f3c890144d1b33968d) (cherry picked from commit 73c80f69ba37eebb5279dcdea7f0fa8ef856c143) Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Co-authored-by: Miro HronĨok Co-authored-by: Mikhail Efimov --- Makefile.pre.in | 15 +++++++++++---- ...2025-11-20-23-15-39.gh-issue-141808.NEewZC.rst | 4 ++++ 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2025-11-20-23-15-39.gh-issue-141808.NEewZC.rst diff --git a/Makefile.pre.in b/Makefile.pre.in index 066e71f012a651..ecf77bdc41cc67 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -730,7 +730,7 @@ check-app-store-compliance: # Profile generation build must start from a clean tree. profile-clean-stamp: - $(MAKE) clean + $(MAKE) clean-profile touch $@ # Compile with profile generation enabled. @@ -2972,7 +2972,6 @@ clean-retain-profile: pycremoval -rm -rf Python/deepfreeze -rm -f Python/frozen_modules/*.h -rm -f Python/frozen_modules/MANIFEST - -rm -f jit_stencils.h -find build -type f -a ! -name '*.gc??' -exec rm -f {} ';' -rm -f Include/pydtrace_probes.h -rm -f profile-gen-stamp @@ -2991,13 +2990,21 @@ profile-removal: rm -f profile-run-stamp rm -f profile-bolt-stamp -.PHONY: clean -clean: clean-retain-profile clean-bolt +.PHONY: clean-profile +clean-profile: clean-retain-profile clean-bolt @if test @DEF_MAKE_ALL_RULE@ = profile-opt -o @DEF_MAKE_ALL_RULE@ = bolt-opt; then \ rm -f profile-gen-stamp profile-clean-stamp; \ $(MAKE) profile-removal; \ fi +# gh-141808: The JIT stencils are deliberately kept in clean-profile +.PHONY: clean-jit-stencils +clean-jit-stencils: + -rm -f jit_stencils*.h + +.PHONY: clean +clean: clean-profile clean-jit-stencils + .PHONY: clobber clobber: clean -rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ diff --git a/Misc/NEWS.d/next/Build/2025-11-20-23-15-39.gh-issue-141808.NEewZC.rst b/Misc/NEWS.d/next/Build/2025-11-20-23-15-39.gh-issue-141808.NEewZC.rst new file mode 100644 index 00000000000000..73220e1990006b --- /dev/null +++ b/Misc/NEWS.d/next/Build/2025-11-20-23-15-39.gh-issue-141808.NEewZC.rst @@ -0,0 +1,4 @@ +When running ``make clean-retain-profile``, keep the +generated JIT stencils. That way, the stencils are not generated twice when +Profile-guided optimization (PGO) is used. It also allows distributors to +supply their own pre-built JIT stencils.