llvm-project/llvm/cmake
Fangrui Song a96f875fe9 [CMake][ELF] Add -fno-semantic-interposition for GCC and Clang>=13
In a `-DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_LINK_LLVM_DYLIB=on -DCLANG_LINK_CLANG_DYLIB=on`
build, libLLVM-13git.so is 2% smaller and libclang-cpp.so is 1% smaller (on top of -Wl,-Bsymbolic-functions).
There may be some small performance improvement as well because GCC
-fPIC suppresses interprocedural optimizations for non-inline
definitions by default.

Note: we cannot add -fno-semantic-interposition for Clang<13.  Clang<13's
implementation additionally optimizes global variables, which is incompatible
with unfortunate ELF -fno-pic default: direct access relocations for external
data. If the executable has a -fno-pic object file referencing a global variable
declared in a public header, the direct access relocation will cause a copy
relocation. The executable and libLLVM.so/libclang-cpp.so will disagree on the
address.

Reviewed By: phosek

Differential Revision: https://reviews.llvm.org/D102453
2021-06-03 15:26:34 -07:00
..
modules [CMake][ELF] Add -fno-semantic-interposition for GCC and Clang>=13 2021-06-03 15:26:34 -07:00
platforms [llvm] Update WinMsvc.cmake's fms-compatability to match llvm's prereqs 2020-12-04 16:35:05 -08:00
README
config-ix.cmake Fix lld macho standalone build by including llvm/Config/llvm-config.h instead of llvm/Config/config.h 2021-05-19 11:15:07 -04:00
config.guess [PowerPC] Add the LLVM triple for powerpcle [1/5] 2021-01-02 12:17:22 -06:00
dummy.cpp
nsis_icon.ico
nsis_logo.bmp
unwind.h [CMake][ExecutionEngine] add HAVE_(DE)REGISTER_FRAME as a config.h macros 2020-11-10 13:09:44 -05:00

README

See docs/CMake.html for instructions on how to build LLVM with CMake.