From e9d85264ac4cdf505c7497612d3fe7630590c52f Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Mon, 29 Oct 2018 17:30:04 +0000 Subject: [libc++] Use exclude_from_explicit_instantiation instead of always_inline Summary: This commit adopts the exclude_from_explicit_instantiation attribute discussed at [1] and reviewed in [2] in libc++ to supplant the use of __always_inline__ for visibility purposes. This change means that users wanting to link together translation units built with different versions of libc++'s headers into the same final linked image MUST define the _LIBCPP_HIDE_FROM_ABI_PER_TU macro to 1 when building those TUs. Doing otherwise will lead to ODR violations and ABI issues. [1]: http://lists.llvm.org/pipermail/cfe-dev/2018-August/059024.html [2]: https://reviews.llvm.org/D51789 Reviewers: rsmith, EricWF Subscribers: dexonsmith, libcxx-commits Differential Revision: https://reviews.llvm.org/D52405 llvm-svn: 345516 --- libcxx/docs/ReleaseNotes.rst | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'libcxx/docs/ReleaseNotes.rst') diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst index 52d7a1ed42f..4cf5182a7f3 100644 --- a/libcxx/docs/ReleaseNotes.rst +++ b/libcxx/docs/ReleaseNotes.rst @@ -41,3 +41,10 @@ New Features API Changes ----------- - Building libc++ for Mac OSX 10.6 is not supported anymore. +- Starting with LLVM 8.0.0, users that wish to link together translation units + built with different versions of libc++'s headers into the same final linked + image MUST define the _LIBCPP_HIDE_FROM_ABI_PER_TU macro to 1 when building + those translation units. Not defining _LIBCPP_HIDE_FROM_ABI_PER_TU to 1 and + linking translation units built with different versions of libc++'s headers + together may lead to ODR violations and ABI issues. On the flipside, code + size improvements should be expected for everyone not defining the macro. -- cgit v1.2.3