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

Reply via email to