Fangrui Song via llvm-dev
2021-May-07 20:28 UTC
[llvm-dev] [CMake][ELF] Add -fno-semantic-interposition and -Bsymbolic-functions
Motivated by a recent rant on too slow clang (linking against libLLVM.so and libclang-cpp.so) when building the Linux kernel, I just created a CMake patch https://reviews.llvm.org/D102090 which will add -fno-semantic-interposition and -Wl,-Bsymbolic-functions to our build. (My x86 kernel defconfig build is at least 15% faster) I have added some distribution packagers as reviewers. Sending this message to attract more users.
Fāng-ruì Sòng via llvm-dev
2021-Jun-04 22:07 UTC
[llvm-dev] [CMake][ELF] Add -fno-semantic-interposition and -Bsymbolic-functions
On Fri, May 7, 2021 at 1:28 PM Fangrui Song <maskray at google.com> wrote:> > Motivated by a recent rant on too slow clang (linking against libLLVM.so and libclang-cpp.so) > when building the Linux kernel, I just created a CMake patch https://reviews.llvm.org/D102090 > which will add -fno-semantic-interposition and -Wl,-Bsymbolic-functions to our build. > (My x86 kernel defconfig build is at least 15% faster) > > I have added some distribution packagers as reviewers. Sending this message to > attract more users.Circling back on this. Two patches have landed and will benefit Clang 13 onwards. https://reviews.llvm.org/D102090 [CMake][ELF] Link libLLVM.so and libclang-cpp.so with -Bsymbolic-functions (my Linux kernel build with the libLLVM.so and libclang-cpp.so clang is more than 15%+ faster, presumably due to much fewer symbol lookups. ~90% fewer JUMP_SLOT dynamic relocations) https://reviews.llvm.org/D102453 [CMake][ELF] Add -fno-semantic-interposition for GCC and Clang>=13 (https://llvm-compile-time-tracker.com/compare.php?from=73c3530f5e057333eeac300b9d9925a13c55c9a6&to=a96f875fe98de5eb5f44b0148baa442c998364ed&stat=instructions measures 3~4% improvement when compiled with GCC! the binary size is 2% smaller)