https://github.com/python/cpython/commit/34c06ccc4c6c21935b46302935f3df24b00daa2c
commit: 34c06ccc4c6c21935b46302935f3df24b00daa2c
branch: main
author: Ken Jin <[email protected]>
committer: Fidget-Spinner <[email protected]>
date: 2025-02-13T22:06:00+08:00
summary:

gh-130048: Reintroduce full LTO as default on Clang (GH-130049)

files:
A Misc/NEWS.d/next/Build/2025-02-12-19-51-19.gh-issue-130048.kHNkzP.rst
M Doc/using/configure.rst
M Doc/whatsnew/3.14.rst
M configure
M configure.ac

diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst
index 72912cea2f0c28..e7116d55815679 100644
--- a/Doc/using/configure.rst
+++ b/Doc/using/configure.rst
@@ -575,6 +575,9 @@ also be used to improve performance.
    .. versionchanged:: 3.12
       Use ThinLTO as the default optimization policy on Clang if the compiler 
accepts the flag.
 
+   .. versionchanged:: next
+      Revert to using full LTO as the default optimization policy on Clang.
+
 .. option:: --enable-bolt
 
    Enable usage of the `BOLT post-link binary optimizer
diff --git a/Doc/whatsnew/3.14.rst b/Doc/whatsnew/3.14.rst
index ece5afd4597ab8..8e4b617181fd99 100644
--- a/Doc/whatsnew/3.14.rst
+++ b/Doc/whatsnew/3.14.rst
@@ -1279,6 +1279,10 @@ Build changes
 * GNU Autoconf 2.72 is now required to generate :file:`configure`.
   (Contributed by Erlend Aasland in :gh:`115765`.)
 
+* CPython now uses Full LTO as the default link time optimization policy
+  on Clang. This reverts an earlier change in CPython 3.12.
+  (Contributed by Ken Jin in :gh:`130049`.)
+
 .. _whatsnew314-pep761:
 
 PEP 761: Discontinuation of PGP signatures
diff --git 
a/Misc/NEWS.d/next/Build/2025-02-12-19-51-19.gh-issue-130048.kHNkzP.rst 
b/Misc/NEWS.d/next/Build/2025-02-12-19-51-19.gh-issue-130048.kHNkzP.rst
new file mode 100644
index 00000000000000..2344325e689f34
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2025-02-12-19-51-19.gh-issue-130048.kHNkzP.rst
@@ -0,0 +1 @@
+CPython now uses Full LTO as the default link time optimization policy on 
Clang. This reverts an earlier change in CPython 3.12.
diff --git a/configure b/configure
index 453b0123ded0a4..bebc8bc1a34f9b 100755
--- a/configure
+++ b/configure
@@ -8766,55 +8766,8 @@ printf "%s\n" "$as_me: llvm-ar found via xcrun: 
${LLVM_AR}" >&6;}
           # Any changes made here should be reflected in the GCC+Darwin case 
below
           if test $Py_LTO_POLICY = default
           then
-            # Check that ThinLTO is accepted.
-            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C 
compiler accepts -flto=thin" >&5
-printf %s "checking whether C compiler accepts -flto=thin... " >&6; }
-if test ${ax_cv_check_cflags___flto_thin+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e)
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -flto=thin"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ax_cv_check_cflags___flto_thin=yes
-else case e in #(
-  e) ax_cv_check_cflags___flto_thin=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 
$ax_cv_check_cflags___flto_thin" >&5
-printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; }
-if test "x$ax_cv_check_cflags___flto_thin" = xyes
-then :
-
-              LTOFLAGS="-flto=thin -Wl,-export_dynamic 
-Wl,-object_path_lto,\"\$@\".lto"
-              LTOCFLAGS="-flto=thin"
-
-else case e in #(
-  e)
-              LTOFLAGS="-flto -Wl,-export_dynamic 
-Wl,-object_path_lto,\"\$@\".lto"
-              LTOCFLAGS="-flto"
-
-             ;;
-esac
-fi
-
+            LTOFLAGS="-flto -Wl,-export_dynamic 
-Wl,-object_path_lto,\"\$@\".lto"
+            LTOCFLAGS="-flto"
           else
             LTOFLAGS="-flto=${Py_LTO_POLICY} -Wl,-export_dynamic 
-Wl,-object_path_lto,\"\$@\".lto"
             LTOCFLAGS="-flto=${Py_LTO_POLICY}"
@@ -8823,48 +8776,7 @@ fi
         *)
           if test $Py_LTO_POLICY = default
           then
-            # Check that ThinLTO is accepted
-            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C 
compiler accepts -flto=thin" >&5
-printf %s "checking whether C compiler accepts -flto=thin... " >&6; }
-if test ${ax_cv_check_cflags___flto_thin+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e)
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -flto=thin"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ax_cv_check_cflags___flto_thin=yes
-else case e in #(
-  e) ax_cv_check_cflags___flto_thin=no ;;
-esac
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 
$ax_cv_check_cflags___flto_thin" >&5
-printf "%s\n" "$ax_cv_check_cflags___flto_thin" >&6; }
-if test "x$ax_cv_check_cflags___flto_thin" = xyes
-then :
-  LTOFLAGS="-flto=thin"
-else case e in #(
-  e) LTOFLAGS="-flto" ;;
-esac
-fi
-
+            LTOFLAGS="-flto"
           else
             LTOFLAGS="-flto=${Py_LTO_POLICY}"
           fi
diff --git a/configure.ac b/configure.ac
index 234ae90616af62..e1e335a4d4b2a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1986,15 +1986,8 @@ if test "$Py_LTO" = 'true' ; then
           # Any changes made here should be reflected in the GCC+Darwin case 
below
           if test $Py_LTO_POLICY = default
           then
-            # Check that ThinLTO is accepted.
-            AX_CHECK_COMPILE_FLAG([-flto=thin],[
-              LTOFLAGS="-flto=thin -Wl,-export_dynamic 
-Wl,-object_path_lto,\"\$@\".lto"
-              LTOCFLAGS="-flto=thin"
-              ],[
-              LTOFLAGS="-flto -Wl,-export_dynamic 
-Wl,-object_path_lto,\"\$@\".lto"
-              LTOCFLAGS="-flto"
-              ]
-            )
+            LTOFLAGS="-flto -Wl,-export_dynamic 
-Wl,-object_path_lto,\"\$@\".lto"
+            LTOCFLAGS="-flto"
           else
             LTOFLAGS="-flto=${Py_LTO_POLICY} -Wl,-export_dynamic 
-Wl,-object_path_lto,\"\$@\".lto"
             LTOCFLAGS="-flto=${Py_LTO_POLICY}"
@@ -2003,8 +1996,7 @@ if test "$Py_LTO" = 'true' ; then
         *)
           if test $Py_LTO_POLICY = default
           then
-            # Check that ThinLTO is accepted
-            
AX_CHECK_COMPILE_FLAG([-flto=thin],[LTOFLAGS="-flto=thin"],[LTOFLAGS="-flto"])
+            LTOFLAGS="-flto"
           else
             LTOFLAGS="-flto=${Py_LTO_POLICY}"
           fi

_______________________________________________
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