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
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
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.
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"
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
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"