On Mon, 18 Nov 2024 11:19:11 GMT, Matthias Baesken <mbaes...@openjdk.org> wrote:

>> When trying LTO (configure flag --enable-jvm-feature-link-time-opt=yes) on 
>> Linux x86_64, gcc 11.3.0, we run into a lot of warnings and finally into 
>> this error :
>> 
>>  .. tons of free and malloc related warnings ...
>> 
>> 
>>     inlined from 'pop_segment' at 
>> src/hotspot/share/utilities/stack.inline.hpp:188:9,
>>     inlined from 'pop' at src/hotspot/share/utilities/stack.inline.hpp:84:30,
>>     inlined from 'pop_overflow' at 
>> src/hotspot/share/gc/shared/taskqueue.inline.hpp:231:28,
>>     inlined from 'trim_queue_to_threshold' at 
>> src/hotspot/share/gc/g1/g1ParScanThreadState.cpp:328:37:
>> src/hotspot/share/runtime/os.cpp:666:3: warning: call to 'malloc' declared 
>> with attribute warning: use os::malloc [-Wattribute-warning]
>> src/hotspot/share/runtime/os.cpp:666:3: warning: call to 'malloc' declared 
>> with attribute warning: use os::malloc [-Wattribute-warning]
>> In function 'malloc',
>>     inlined from 'malloc' at src/hotspot/share/runtime/os.cpp:637:0,
>>     inlined from 'AllocateHeap' at 
>> src/hotspot/share/memory/allocation.cpp:42:31,
>>     inlined from 'new_entry' at 
>> src/hotspot/share/nmt/mallocSiteTable.cpp:181:25,
>>     inlined from 'lookup_or_add' at 
>> src/hotspot/share/nmt/mallocSiteTable.cpp:122:48,
>>     inlined from 'allocation_at' at 
>> src/hotspot/share/nmt/mallocSiteTable.hpp:151:37,
>>     inlined from 'record_malloc' at 
>> src/hotspot/share/nmt/mallocTracker.cpp:179:35,
>>     inlined from 'record_malloc' at 
>> src/hotspot/share/nmt/memTracker.hpp:81:42,
>>     inlined from 'realloc' at src/hotspot/share/runtime/os.cpp:746:58,
>>     inlined from 'ReallocateHeap' at 
>> src/hotspot/share/memory/allocation.cpp:59:32,
>>     inlined from 'grow' at src/hotspot/share/utilities/ostream.cpp:377:15,
>>     inlined from 'write' at src/hotspot/share/utilities/ostream.cpp:400:11,
>>     inlined from 'write' at src/hotspot/share/utilities/ostream.cpp:382:0,
>>     inlined from 'put' at src/hotspot/share/utilities/ostream.cpp:212:8,
>>     inlined from 'print_ascii_form' at 
>> src/hotspot/share/runtime/os.cpp:965:19,
>>     inlined from 'print_hex_location' at 
>> src/hotspot/share/runtime/os.cpp:1008:21,
>>     inlined from 'print_hex_dump' at 
>> src/hotspot/share/runtime/os.cpp:1050:23,
>>     inlined from 'print_hex_dump' at src/hotspot/share/runtime/os.hpp:869:19,
>>     inlined from 'print_block_on_error' at 
>> src/hotspot/share/nmt/mallocHeader.cpp:64:23,
>>     inlined from 'resolve_checked_impl' at 
>> src/hotspot/share/nmt/mallocHeader.inline.hpp:106:41,
>>     inlined from 'resolve_checked' at src...
>
> Matthias Baesken has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   handle INCLUDE_LINK_TIME_OPTIMIZATION in macros.hpp

A first nice advantage seems to be the smaller size of libjvm.so  coming from 
the lto build;
lto build

du -sh images/jdk/lib/server/libjvm.so
22M     images/jdk/lib/server/libjvm.so

normal build

du -sh images/jdk/lib/server/libjvm.so
26M     images/jdk/lib/server/libjvm.so


This is in line to what TI claims here for some lto vs non-lto builds (but at 
TI for aarch/arm and not for x86_64)
https://software-dl.ti.com/codegen/docs/tiarmclang/compiler_tools_user_guide/compiler_manual/link_time_optimization/lto_benefits.html#code-size-reduction-due-to-use-of-lto

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

PR Comment: https://git.openjdk.org/jdk/pull/22069#issuecomment-2482927640

Reply via email to