RFR: 8344607: Link Time Optimization - basic support for clang [v2]

Julian Waters jwaters at openjdk.org
Thu Nov 28 08:17:39 UTC 2024


On Thu, 28 Nov 2024 07:56:27 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:

>> Support the clang toolchain when link time optimization is configured.
>> Please note that this is NOT intended to enable lto by default and NOT to fix all possible clang-supporting builds or test issues .
>> 
>> It works on my Linux x86_64 SUSE 15 test machine with  clang15.0.7, also on macOS with Xcode 13.1 devkit  and Xcode 15.4 .
>> 
>> To be able to build on macOS with Xcode, I had to deal with one issue.  The lto-link process runs into this error 
>> 
>> 
>> ld: <inline asm>:11:1: symbol 'SpinPause_return' is already defined
>> SpinPause_return:        
>> ^
>> for architecture arm64
>> clang: error: linker command failed with exit code 1 (use -v to see invocation)
>> 
>> 
>> Seems that when building with LTO,  the  inline assembler code in SpinPause() is not handled well. In the lto inlining the label  SpinPause_return is generated multiple times and causes an 'already defined' error. This goes away when adding NOINLINE to this function.
>> Linux/clang did not show this issue, probably the toolchain there does not have the error.
>
> Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision:
> 
>   use assembler local labels

src/hotspot/os_cpu/bsd_aarch64/os_bsd_aarch64.cpp line 528:

> 526:         "  add  %[d], %[d], %[o]  \n"
> 527:         "  br   %[d]              \n"
> 528:         "  b    1f  \n" // case SpinWait::NONE  (-1)

If we're going forward with local labels, please try to align the newline characters with the rest

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

PR Review Comment: https://git.openjdk.org/jdk/pull/22412#discussion_r1861703122


More information about the build-dev mailing list