issue28032: never imply --with-lto as part of --with-optimizations.

Too many build tool chains do not properly support it, including building
and linking an executable fine that simply segfaults when you try to run
it (such as debian jessie 8.5's gcc 4.9).  On others where it does appear
to build (ubuntu 16.04's gcc 5.4) there are still test_distutils and test_gdb
failures to deal with.

We're not going to spend time attempting to maintain a complicated white list
of what does and doesn't work in our configure.ac file.
parent 262b6793
...@@ -48,8 +48,8 @@ You should do a "make clean" at the toplevel first.) ...@@ -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 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 you run make. This sets the default make targets up to enable Profile Guided
Optimization (PGO) and Link Time Optimization (LTO) on most platforms. Optimization (PGO) and may be used to auto-enable Link Time Optimization (LTO)
For more details, see the sections bellow. on some platforms. For more details, see the sections bellow.
Profile Guided Optimization Profile Guided Optimization
...@@ -79,9 +79,10 @@ that is optimized and suitable for distribution or production installation. ...@@ -79,9 +79,10 @@ that is optimized and suitable for distribution or production installation.
Link Time Optimization Link Time Optimization
---------------------- ----------------------
LTO takes advantages of recent compiler toolchains ability to optimize across Enabled via configure's --with-lto flag. LTO takes advantages of recent
the otherwise arbitrary .o file boundary when building final executables or compiler toolchains ability to optimize across the otherwise arbitrary .o file
shared libraries for additional performance gains. boundary when building final executables or shared libraries for additional
performance gains.
What's New What's New
......
...@@ -1509,7 +1509,7 @@ Optional Packages: ...@@ -1509,7 +1509,7 @@ Optional Packages:
compiler compiler
--with-suffix=.exe set executable suffix --with-suffix=.exe set executable suffix
--with-pydebug build with Py_DEBUG defined --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. etc). Disabled by default.
--with-lto Enable Link Time Optimization in PGO builds. --with-lto Enable Link Time Optimization in PGO builds.
Disabled by default. Disabled by default.
...@@ -6565,13 +6565,10 @@ $as_echo "no" >&6; } ...@@ -6565,13 +6565,10 @@ $as_echo "no" >&6; }
fi fi
if test "$Py_OPT" = 'true' ; then if test "$Py_OPT" = 'true' ; then
Py_LTO='true' # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not
case $ac_sys_system in # compile working code using it and both test_distutils and test_gdb are
Darwin*) # broken when you do managed to get a toolchain that works with it. People
# At least on macOS El Capitan, LTO does not work with PGO. # who want LTO need to use --with-lto themselves.
Py_LTO='false'
;;
esac
DEF_MAKE_ALL_RULE="profile-opt" DEF_MAKE_ALL_RULE="profile-opt"
REQUIRE_PGO="yes" REQUIRE_PGO="yes"
DEF_MAKE_RULE="build_all" DEF_MAKE_RULE="build_all"
......
...@@ -1235,7 +1235,7 @@ AC_SUBST(DEF_MAKE_ALL_RULE) ...@@ -1235,7 +1235,7 @@ AC_SUBST(DEF_MAKE_ALL_RULE)
AC_SUBST(DEF_MAKE_RULE) AC_SUBST(DEF_MAKE_RULE)
Py_OPT='false' Py_OPT='false'
AC_MSG_CHECKING(for --with-optimizations) 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 if test "$withval" != no
then then
...@@ -1247,13 +1247,10 @@ else ...@@ -1247,13 +1247,10 @@ else
fi], fi],
[AC_MSG_RESULT(no)]) [AC_MSG_RESULT(no)])
if test "$Py_OPT" = 'true' ; then if test "$Py_OPT" = 'true' ; then
Py_LTO='true' # Intentionally not forcing Py_LTO='true' here. Too many toolchains do not
case $ac_sys_system in # compile working code using it and both test_distutils and test_gdb are
Darwin*) # broken when you do managed to get a toolchain that works with it. People
# At least on macOS El Capitan, LTO does not work with PGO. # who want LTO need to use --with-lto themselves.
Py_LTO='false'
;;
esac
DEF_MAKE_ALL_RULE="profile-opt" DEF_MAKE_ALL_RULE="profile-opt"
REQUIRE_PGO="yes" REQUIRE_PGO="yes"
DEF_MAKE_RULE="build_all" DEF_MAKE_RULE="build_all"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment