RFR: 8344607: Link Time Optimization - basic support for clang

Matthias Baesken mbaesken at openjdk.org
Wed Nov 27 15:20:13 UTC 2024


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.

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

Commit messages:
 - JDK-8344607

Changes: https://git.openjdk.org/jdk/pull/22412/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22412&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8344607
  Stats: 5 lines in 2 files changed: 5 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/22412.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22412/head:pull/22412

PR: https://git.openjdk.org/jdk/pull/22412


More information about the build-dev mailing list