https://github.com/python/cpython/commit/2f60b8f02fe7cb83dd589d9664460082c13e85ef
commit: 2f60b8f02fe7cb83dd589d9664460082c13e85ef
branch: main
author: Krishna Chaitanya <[email protected]>
committer: Fidget-Spinner <[email protected]>
date: 2025-11-01T16:41:23Z
summary:

gh-140513: Fail to compile if `_Py_TAIL_CALL_INTERP` is set but `preserve_none` 
and `musttail` do not exist. (GH-140548)

Co-authored-by: Chris Eibl <[email protected]>

files:
A Misc/NEWS.d/next/Build/2025-10-25-08-07-06.gh-issue-140513.6OhLTs.rst
M Python/ceval_macros.h

diff --git 
a/Misc/NEWS.d/next/Build/2025-10-25-08-07-06.gh-issue-140513.6OhLTs.rst 
b/Misc/NEWS.d/next/Build/2025-10-25-08-07-06.gh-issue-140513.6OhLTs.rst
new file mode 100644
index 00000000000000..1035ebf8d781cf
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2025-10-25-08-07-06.gh-issue-140513.6OhLTs.rst
@@ -0,0 +1,2 @@
+Generate a clear compilation error when ``_Py_TAIL_CALL_INTERP`` is enabled but
+either ``preserve_none`` or ``musttail`` is not supported.
diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h
index 8083913b1a1cfc..868ab6f755874f 100644
--- a/Python/ceval_macros.h
+++ b/Python/ceval_macros.h
@@ -79,6 +79,14 @@
 #endif
 
 #if _Py_TAIL_CALL_INTERP
+#   if defined(__clang__) || defined(__GNUC__)
+#       if !_Py__has_attribute(preserve_none) || !_Py__has_attribute(musttail)
+#           error "This compiler does not have support for efficient tail 
calling."
+#       endif
+#   elif defined(_MSC_VER) && (_MSC_VER < 1950)
+#       error "You need at least VS 2026 / PlatformToolset v145 for tail 
calling."
+#   endif
+
     // Note: [[clang::musttail]] works for GCC 15, but not 
__attribute__((musttail)) at the moment.
 #   define Py_MUSTTAIL [[clang::musttail]]
 #   define Py_PRESERVE_NONE_CC __attribute__((preserve_none))

_______________________________________________
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