On Tue, 4 Feb 2025 08:51:43 GMT, Matthias Baesken <mbaes...@openjdk.org> wrote:

> Looks like the binary size optimization flags are not ideal when compiling 
> with MSVC.
> On other compilers (gcc/clang) the current size optimization flags lead in 
> most cases to smaller libraries. On MSVC this seems to be not the case, the 
> libs often get larger when optimizing for SIZE.
> 
> For example jvm.dll (build with VS2022) with current -Os size optimization
> 20M images/jdk/bin/server/jvm.dll
> 
> with -O1 set for size optimization
> 13M images/jdk/bin/server/jvm.dll
> 
> See the doc from MSVC about "optimize for size"
> https://learn.microsoft.com/en-us/cpp/build/reference/o1-o2-minimize-size-maximize-speed?view=msvc-170
> "The /O1 option sets the individual optimization options that create the 
> smallest code in the majority of cases."
> The Os option is only a part of the size minimization flag set :
> /O1 (Minimize Size) equivalent to /Og /Os /Oy /Ob2 /GF /Gy

What libraries are currently optimized for size on Windows, i.e. is affected by 
this change?

What testing have you performed to ensure no new compiler bugs show up? 
Changing optimization level introduces a risk of compiler-related bugs, similar 
to compiler upgrades. Note that this is not only about bugs in the compiler, 
but in our code where we use undefined behavior, which happily have worked out 
fine for one optimization level, but which results in bad code generated 
(correctly) by the compiler.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/23432#issuecomment-2633543966

Reply via email to