mirror of https://github.com/python/cpython
Issue #25702: A --with-lto configure option has been added that will
enable link time optimizations at build time during a make profile-opt.
This commit is contained in:
parent
1ff6b6ab12
commit
d82da9f7f2
|
@ -504,7 +504,7 @@ profile-opt:
|
|||
$(MAKE) profile-removal
|
||||
|
||||
build_all_generate_profile:
|
||||
$(MAKE) all CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_GEN_FLAG)" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
|
||||
$(MAKE) all CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"
|
||||
|
||||
run_profile_task:
|
||||
: # FIXME: can't run for a cross build
|
||||
|
@ -514,7 +514,7 @@ build_all_merge_profile:
|
|||
$(LLVM_PROF_MERGER)
|
||||
|
||||
build_all_use_profile:
|
||||
$(MAKE) all CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_USE_FLAG)"
|
||||
$(MAKE) all CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"
|
||||
|
||||
# Compile and run with gcov
|
||||
.PHONY=coverage coverage-lcov coverage-report
|
||||
|
|
|
@ -388,6 +388,12 @@ Tests
|
|||
Build
|
||||
-----
|
||||
|
||||
- Issue #25702: A --with-lto configure option has been added that will
|
||||
enable link time optimizations at build time during a make profile-opt.
|
||||
Some compilers and toolchains are known to not produce stable code when
|
||||
using LTO, be sure to test things thoroughly before relying on it.
|
||||
It can provide a few % speed up over profile-opt alone.
|
||||
|
||||
- Issue #26624: Adds validation of ucrtbase[d].dll version with warning
|
||||
for old versions.
|
||||
|
||||
|
|
|
@ -673,6 +673,7 @@ LLVM_PROF_FILE
|
|||
LLVM_PROF_MERGER
|
||||
PGO_PROF_USE_FLAG
|
||||
PGO_PROF_GEN_FLAG
|
||||
LTOFLAGS
|
||||
ABIFLAGS
|
||||
LN
|
||||
MKDIR_P
|
||||
|
@ -807,6 +808,7 @@ with_suffix
|
|||
enable_shared
|
||||
enable_profiling
|
||||
with_pydebug
|
||||
with_lto
|
||||
with_hash_algorithm
|
||||
with_address_sanitizer
|
||||
with_libs
|
||||
|
@ -1487,6 +1489,8 @@ Optional Packages:
|
|||
compiler
|
||||
--with-suffix=.exe set executable suffix
|
||||
--with-pydebug build with Py_DEBUG defined
|
||||
--with-lto Enable Link Time Optimization in PGO builds.
|
||||
Disabled by default.
|
||||
--with-hash-algorithm=[fnv|siphash24]
|
||||
select hash algorithm
|
||||
--with-address-sanitizer
|
||||
|
@ -6560,6 +6564,48 @@ $as_echo "no" >&6; }
|
|||
fi
|
||||
|
||||
|
||||
# Enable LTO flags
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-lto" >&5
|
||||
$as_echo_n "checking for --with-lto... " >&6; }
|
||||
|
||||
# Check whether --with-lto was given.
|
||||
if test "${with_lto+set}" = set; then :
|
||||
withval=$with_lto;
|
||||
if test "$withval" != no
|
||||
then
|
||||
Py_LTO='true'
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; };
|
||||
else
|
||||
Py_LTO='false'
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; };
|
||||
fi
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
if test "$Py_LTO" = 'true' ; then
|
||||
case $CC in
|
||||
*clang*)
|
||||
# Any changes made here should be reflected in the GCC+Darwin case below
|
||||
LTOFLAGS="-flto"
|
||||
;;
|
||||
*gcc*)
|
||||
case $ac_sys_system in
|
||||
Darwin*)
|
||||
LTOFLAGS="-flto"
|
||||
;;
|
||||
*)
|
||||
LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Enable PGO flags.
|
||||
|
||||
|
||||
|
|
33
configure.ac
33
configure.ac
|
@ -1235,6 +1235,39 @@ else AC_MSG_RESULT(no); Py_DEBUG='false'
|
|||
fi],
|
||||
[AC_MSG_RESULT(no)])
|
||||
|
||||
# Enable LTO flags
|
||||
AC_SUBST(LTOFLAGS)
|
||||
AC_MSG_CHECKING(for --with-lto)
|
||||
AC_ARG_WITH(lto, AS_HELP_STRING([--with-lto], [Enable Link Time Optimization in PGO builds. Disabled by default.]),
|
||||
[
|
||||
if test "$withval" != no
|
||||
then
|
||||
Py_LTO='true'
|
||||
AC_MSG_RESULT(yes);
|
||||
else
|
||||
Py_LTO='false'
|
||||
AC_MSG_RESULT(no);
|
||||
fi],
|
||||
[AC_MSG_RESULT(no)])
|
||||
if test "$Py_LTO" = 'true' ; then
|
||||
case $CC in
|
||||
*clang*)
|
||||
# Any changes made here should be reflected in the GCC+Darwin case below
|
||||
LTOFLAGS="-flto"
|
||||
;;
|
||||
*gcc*)
|
||||
case $ac_sys_system in
|
||||
Darwin*)
|
||||
LTOFLAGS="-flto"
|
||||
;;
|
||||
*)
|
||||
LTOFLAGS="-flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Enable PGO flags.
|
||||
AC_SUBST(PGO_PROF_GEN_FLAG)
|
||||
AC_SUBST(PGO_PROF_USE_FLAG)
|
||||
|
|
Loading…
Reference in New Issue