RFR: 8344607: Link Time Optimization - basic support for clang [v4]
Matthias Baesken
mbaesken at openjdk.org
Thu Dec 5 15:24:46 UTC 2024
On Tue, 3 Dec 2024 16:46:04 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 fat lto objects on AIX/clang
Thanks for the reviews !
With the current commit I was able to build with clang and lto enabled on macOS aarch64, AIX and Linux x86_64.
(on Linux ppc64le, the whole clang build still fails, but this is a separate issue and it fails also without lto, see
https://bugs.openjdk.org/browse/JDK-8338303
8338303: Linux ppc64le with toolchain clang - detection failure in early JVM startup )
-------------
PR Comment: https://git.openjdk.org/jdk/pull/22412#issuecomment-2520613177
More information about the build-dev
mailing list