# HG changeset patch # User Chris Cannam # Date 1542287120 0 # Node ID 5ffcb4e10e1b42e80d4b229b67bf519fa33f3d0b # Parent d84a0783ce113c716685f77ed4d7fabe0bf2c0f4 Experiment with LTO on gcc build diff -r d84a0783ce11 -r 5ffcb4e10e1b configure --- a/configure Thu Nov 15 09:03:51 2018 +0000 +++ b/configure Thu Nov 15 13:05:20 2018 +0000 @@ -625,7 +625,6 @@ QMAKE_CONFIG HAVES CXXSTANDARD -CXXFLAGS_MINIMAL CUT SHA1SUM MAKEDEPEND @@ -4413,7 +4412,6 @@ SV_DEFINES_DEBUG="-DDEBUG -DBUILD_DEBUG -DWANT_TIMING" SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DNO_TIMING -DNO_HIT_COUNTS" -SV_DEFINES_MINIMAL="$SV_DEFINES_RELEASE" # Now we have: USER_CXXFLAGS contains any flags the user set # explicitly; AUTOCONF_CXXFLAGS contains flags that Autoconf thought @@ -4421,15 +4419,20 @@ # allow ourselves to be overridden (later) by the former CXXFLAGS_DEBUG="$AUTOCONF_CXXFLAGS" +OPTFLAGS_DEBUG="-O2" +LDFLAGS_DEBUG="" CXXFLAGS_RELEASE="$AUTOCONF_CXXFLAGS" -CXXFLAGS_MINIMAL="$AUTOCONF_CXXFLAGS" +OPTFLAGS_RELEASE="-O2" +LDFLAGS_RELEASE="" CXXSTANDARD=c++14 if test "x$GCC" = "xyes"; then CXXFLAGS_ANY="-fpic -Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" - CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -O2 -Werror" - CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0 -O3 -ffast-math" - CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0" + CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -Werror" + OPTFLAGS_DEBUG="-O2" + CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0" + LDFLAGS_RELEASE="-fuse-linker-plugin" + OPTFLAGS_RELEASE="-O3 -ffast-math -flto" LIBS_DEBUG="$LIBS" as_CACHEVAR=`$as_echo "ax_cv_check_cxxflags__--std=$CXXSTANDARD" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts --std=$CXXSTANDARD" >&5 @@ -4472,7 +4475,8 @@ fi -CXXFLAGS_BUILD="$CXXFLAGS_RELEASE" +CXXFLAGS_BUILD="$CXXFLAGS_RELEASE $OPTFLAGS_RELEASE" +LDFLAGS_BUILD="$LDFLAGS_RELEASE $OPTFLAGS_RELEASE" SV_DEFINES_BUILD="$SV_DEFINES_RELEASE" QMAKE_CONFIG="release" @@ -4482,7 +4486,8 @@ enableval=$enable_debug; { $as_echo "$as_me:${as_lineno-$LINENO}: enabling debug build" >&5 $as_echo "$as_me: enabling debug build" >&6;} QMAKE_CONFIG="debug" -CXXFLAGS_BUILD="$CXXFLAGS_DEBUG" +CXXFLAGS_BUILD="$CXXFLAGS_DEBUG $OPTFLAGS_DEBUG" +LDFLAGS_BUILD="$LDFLAGS_DEBUG" SV_DEFINES_BUILD="$SV_DEFINES_DEBUG" LIBS="$LIBS_DEBUG" fi @@ -4494,10 +4499,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Overriding default compiler flags with the above user setting." >&5 $as_echo "$as_me: Overriding default compiler flags with the above user setting." >&6;} CXXFLAGS_BUILD="$USER_CXXFLAGS" - CXXFLAGS_MINIMAL="$USER_CXXFLAGS" + LDFLAGS_BUILD="" fi CXXFLAGS="$CXXFLAGS_BUILD $SV_DEFINES_BUILD" +LDFLAGS="$LDFLAGS_BUILD" # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ @@ -7394,7 +7400,6 @@ - ac_config_files="$ac_config_files config.pri" diff -r d84a0783ce11 -r 5ffcb4e10e1b configure.ac --- a/configure.ac Thu Nov 15 09:03:51 2018 +0000 +++ b/configure.ac Thu Nov 15 13:05:20 2018 +0000 @@ -41,7 +41,6 @@ SV_DEFINES_DEBUG="-DDEBUG -DBUILD_DEBUG -DWANT_TIMING" SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DNO_TIMING -DNO_HIT_COUNTS" -SV_DEFINES_MINIMAL="$SV_DEFINES_RELEASE" # Now we have: USER_CXXFLAGS contains any flags the user set # explicitly; AUTOCONF_CXXFLAGS contains flags that Autoconf thought @@ -49,28 +48,35 @@ # allow ourselves to be overridden (later) by the former CXXFLAGS_DEBUG="$AUTOCONF_CXXFLAGS" +OPTFLAGS_DEBUG="-O2" +LDFLAGS_DEBUG="" CXXFLAGS_RELEASE="$AUTOCONF_CXXFLAGS" -CXXFLAGS_MINIMAL="$AUTOCONF_CXXFLAGS" +OPTFLAGS_RELEASE="-O2" +LDFLAGS_RELEASE="" CXXSTANDARD=c++14 if test "x$GCC" = "xyes"; then CXXFLAGS_ANY="-fpic -Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe" - CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -O2 -Werror" - CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0 -O3 -ffast-math" - CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0" + CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -Werror" + OPTFLAGS_DEBUG="-O2" + CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0" + LDFLAGS_RELEASE="-fuse-linker-plugin" + OPTFLAGS_RELEASE="-O3 -ffast-math -flto" LIBS_DEBUG="$LIBS" AX_CHECK_COMPILE_FLAG(--std=$CXXSTANDARD, [], [AC_MSG_NOTICE([Compiler does not appear to support $CXXSTANDARD, falling back to c++11]) CXXSTANDARD=c++11]) fi -CXXFLAGS_BUILD="$CXXFLAGS_RELEASE" +CXXFLAGS_BUILD="$CXXFLAGS_RELEASE $OPTFLAGS_RELEASE" +LDFLAGS_BUILD="$LDFLAGS_RELEASE $OPTFLAGS_RELEASE" SV_DEFINES_BUILD="$SV_DEFINES_RELEASE" QMAKE_CONFIG="release" AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug],[enable debug support [default=no]])],[AC_MSG_NOTICE([enabling debug build]) QMAKE_CONFIG="debug" -CXXFLAGS_BUILD="$CXXFLAGS_DEBUG" +CXXFLAGS_BUILD="$CXXFLAGS_DEBUG $OPTFLAGS_DEBUG" +LDFLAGS_BUILD="$LDFLAGS_DEBUG" SV_DEFINES_BUILD="$SV_DEFINES_DEBUG" LIBS="$LIBS_DEBUG"]) @@ -78,10 +84,11 @@ AC_MSG_NOTICE([The CXXFLAGS environment variable is set to "$USER_CXXFLAGS".]) AC_MSG_NOTICE(Overriding default compiler flags with the above user setting.) CXXFLAGS_BUILD="$USER_CXXFLAGS" - CXXFLAGS_MINIMAL="$USER_CXXFLAGS" + LDFLAGS_BUILD="" fi CXXFLAGS="$CXXFLAGS_BUILD $SV_DEFINES_BUILD" +LDFLAGS="$LDFLAGS_BUILD" SV_MODULE_REQUIRED([bz2],[],[bzlib.h],[bz2],[BZ2_bzReadOpen]) SV_MODULE_REQUIRED([fftw3],[fftw3 >= 3.0.0],[fftw3.h],[fftw3],[fftw_execute]) @@ -130,7 +137,6 @@ AC_SUBST(CFLAGS) AC_SUBST(CXXFLAGS) -AC_SUBST(CXXFLAGS_MINIMAL) AC_SUBST(CXXSTANDARD) AC_SUBST(LDFLAGS) AC_SUBST(HAVES)