On Mon, 17 Feb 2025 22:53:29 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:
> > btw for libjdwp with lto enabled (have to modify the make settings because > > this is not supported out of the box) I get > > 1.8M ./lib/libjdwp.debuginfo 280K ./lib/libjdwp.so > > This looks pretty good compared to HIGH or standard (LOW/NORM) settings. > > What is the optimization level? It was with unchanged optimization settings on lib-level (so LOW/NORM stayed for libjdwp) for the compilation, but -O3 set in the linkage settings. See the patch I used for more clarity regarding this experiment diff --git a/make/autoconf/flags-cflags.m4 b/make/autoconf/flags-cflags.m4 index 729e508cc26..b31a98dabc0 100644 --- a/make/autoconf/flags-cflags.m4 +++ b/make/autoconf/flags-cflags.m4 @@ -537,6 +537,10 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER], # no-strict-aliasing everywhere!) TOOLCHAIN_CFLAGS_JDK_CONLY="-fno-strict-aliasing" + # check here for opt-size setting (or later when setting) + TOOLCHAIN_CFLAGS_LTO_JDK="-flto=auto -fuse-linker-plugin -fno-strict-aliasing -fno-fat-lto-objects" + TOOLCHAIN_CXXFLAGS_LTO_JDK="-flto=auto -fuse-linker-plugin -fno-strict-aliasing -fno-fat-lto-objects" + elif test "x$TOOLCHAIN_TYPE" = xclang; then # Restrict the debug information created by Clang to avoid # too big object files and speed the build up a little bit @@ -876,9 +880,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP], $2CFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK} $PIEFLAG" $2CXXFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK} $PIEFLAG" - $2CFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK} \ + $2CFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $TOOLCHAIN_CFLAGS_LTO_JDK $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK} \ $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}" - $2CXXFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK} \ + $2CXXFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $TOOLCHAIN_CXXFLAGS_LTO_JDK $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK} \ $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}" AC_SUBST($2JVM_CFLAGS) diff --git a/make/autoconf/flags-ldflags.m4 b/make/autoconf/flags-ldflags.m4 index 2e060a71d4d..fbd2514ec7e 100644 --- a/make/autoconf/flags-ldflags.m4 +++ b/make/autoconf/flags-ldflags.m4 @@ -59,6 +59,8 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER], BASIC_LDFLAGS_JDK_ONLY="$BASIC_LDFLAGS_JDK_ONLY -Wl,--gc-sections" fi fi + # $(CXX_O_FLAG_HIGHEST_JVM) -> -O3 for gcc + BASIC_LDFLAGS_LTO_JDK="-O3 -flto=auto -fuse-linker-plugin -fno-strict-aliasing" BASIC_LDFLAGS_JVM_ONLY="" @@ -192,7 +194,7 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP], # Export variables according to old definitions, prefix with $2 if present. LDFLAGS_JDK_COMMON="$BASIC_LDFLAGS $BASIC_LDFLAGS_JDK_ONLY \ $OS_LDFLAGS $DEBUGLEVEL_LDFLAGS_JDK_ONLY ${$2EXTRA_LDFLAGS}" - $2LDFLAGS_JDKLIB="$LDFLAGS_JDK_COMMON \ + $2LDFLAGS_JDKLIB="$LDFLAGS_JDK_COMMON $BASIC_LDFLAGS_LTO_JDK \ $SHARED_LIBRARY_FLAGS $REPRODUCIBLE_LDFLAGS $FILE_MACRO_LDFLAGS" $2LDFLAGS_JDKEXE="$LDFLAGS_JDK_COMMON $EXECUTABLE_LDFLAGS \ ${$1_CPU_EXECUTABLE_LDFLAGS} $REPRODUCIBLE_LDFLAGS $FILE_MACRO_LDFLAGS" ------------- PR Comment: https://git.openjdk.org/jdk/pull/23563#issuecomment-2666010735