[PATCH] D14411: Use __attribute__((internal_linkage)) when available.

Evgeniy Stepanov via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 10 14:28:13 PST 2015


eugenis added dependencies: D15433: [libcxx] Remove inline/visibility attributes from exported template methods in valarray., D15432: [libcxx] Move member function definition before it's explicit template instantiation declaration in <valarray> to satisfy GCC..
eugenis added a comment.

Depends on http://reviews.llvm.org/D15432.
Depends on http://reviews.llvm.org/D15433.

With all that change, the switch to internal_linkage attribute removes 3 symbols from the libc++ export table, all in basic_string:
insert(..., InputIterator
insert(..., ForwardIterator
replace(..., InputIterator

These are template methods of a template class. They are instantiated only in functions/methods that are marked with LIBCPP_INLINE_VISIBILITY; normally they are exported as linkonce_odr; after the internal_linkage switch they are not instantiated at all because their callers are never evaluated.

Do you think this is an ABI break?


Repository:
  rL LLVM

http://reviews.llvm.org/D14411





More information about the cfe-commits mailing list