[llvm] updates to LLVM_ABI export macro definitions #144418
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
Update the
LLVM_ABI
macro to always resolve to__attribute__((visibility("default")))
when building LLVM as a shared library for ELF or Mach-O targets.Background
Previously,
LLVM_ABI
was defined to the C++ style attribute[[gnu::visibility("default")]]
when compiling with gcc, which has more restrictions on its placement. Of note, the C++ style attributes cannot decoratefriend
functions and must not appear afterextern
on variable declarations.Documentation for
LLVM_ABI
and related annotations is found in the LLVM repo here.Overview
LLVM_ABI
to__attribute__((visibility("default")))
instead ofLLVM_ATTRIBUTE_VISIBILITY_DEFAULT
, which resolves to C++ style[[gnu::visibility("default")]]
when compiling with gcc.LLVM_ABI_FRIEND
macro and replace all usages of it withLLVM_ABI
.LLVM_ABI_FRIEND
.Validation
Built with clang and gcc on Linux.