diff --git a/README b/README index 6dfbd8c3024..414b6584823 100644 --- a/README +++ b/README @@ -48,8 +48,8 @@ You should do a "make clean" at the toplevel first.) To get an optimized build of Python, "configure --with-optimizations" before you run make. This sets the default make targets up to enable Profile Guided -Optimization (PGO) and Link Time Optimization (LTO) on most platforms. -For more details, see the sections bellow. +Optimization (PGO) and may be used to auto-enable Link Time Optimization (LTO) +on some platforms. For more details, see the sections bellow. Profile Guided Optimization @@ -79,9 +79,10 @@ that is optimized and suitable for distribution or production installation. Link Time Optimization ---------------------- -LTO takes advantages of recent compiler toolchains ability to optimize across -the otherwise arbitrary .o file boundary when building final executables or -shared libraries for additional performance gains. +Enabled via configure's --with-lto flag. LTO takes advantages of recent +compiler toolchains ability to optimize across the otherwise arbitrary .o file +boundary when building final executables or shared libraries for additional +performance gains. What's New diff --git a/configure b/configure index c73b829e299..ab1c32acc96 100755 --- a/configure +++ b/configure @@ -1509,7 +1509,7 @@ Optional Packages: compiler --with-suffix=.exe set executable suffix --with-pydebug build with Py_DEBUG defined - --with-optimizations Enable all optimizations when available (LTO, PGO, + --with-optimizations Enable expensive optimizations (PGO, maybe LTO, etc). Disabled by default. --with-lto Enable Link Time Optimization in PGO builds. Disabled by default. @@ -6565,13 +6565,10 @@ $as_echo "no" >&6; } fi if test "$Py_OPT" = 'true' ; then - Py_LTO='true' - case $ac_sys_system in - Darwin*) - # At least on macOS El Capitan, LTO does not work with PGO. - Py_LTO='false' - ;; - esac + # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not + # compile working code using it and both test_distutils and test_gdb are + # broken when you do managed to get a toolchain that works with it. People + # who want LTO need to use --with-lto themselves. DEF_MAKE_ALL_RULE="profile-opt" REQUIRE_PGO="yes" DEF_MAKE_RULE="build_all" diff --git a/configure.ac b/configure.ac index c2aa8ae9537..36758d46dd4 100644 --- a/configure.ac +++ b/configure.ac @@ -1235,7 +1235,7 @@ AC_SUBST(DEF_MAKE_ALL_RULE) AC_SUBST(DEF_MAKE_RULE) Py_OPT='false' AC_MSG_CHECKING(for --with-optimizations) -AC_ARG_WITH(optimizations, AS_HELP_STRING([--with-optimizations], [Enable all optimizations when available (LTO, PGO, etc). Disabled by default.]), +AC_ARG_WITH(optimizations, AS_HELP_STRING([--with-optimizations], [Enable expensive optimizations (PGO, maybe LTO, etc). Disabled by default.]), [ if test "$withval" != no then @@ -1247,13 +1247,10 @@ else fi], [AC_MSG_RESULT(no)]) if test "$Py_OPT" = 'true' ; then - Py_LTO='true' - case $ac_sys_system in - Darwin*) - # At least on macOS El Capitan, LTO does not work with PGO. - Py_LTO='false' - ;; - esac + # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not + # compile working code using it and both test_distutils and test_gdb are + # broken when you do managed to get a toolchain that works with it. People + # who want LTO need to use --with-lto themselves. DEF_MAKE_ALL_RULE="profile-opt" REQUIRE_PGO="yes" DEF_MAKE_RULE="build_all"