[PATCH] D35326: [libc++] Add _LIBCPP_TEMPLATE_VIS to string operator+ and __vector_base_common

Shoaib Meenai via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 13 09:38:12 PDT 2017


smeenai requested changes to this revision.
smeenai added a comment.
This revision now requires changes to proceed.

This doesn't look right to me. `_LIBCPP_TEMPLATE_VIS` expands to `__attribute__((__type_visibility__("default")))` on compilers where `__type_visibility__` is supported; i.e., its intent is to only export the typeinfo and vtable. gcc doesn't support this attribute, so we'll use `__visibility__` instead and this change will appear to fix your issue, but it's not conceptually correct.

All the types you're seeing link errors against have extern template instantiation declarations in the libc++ headers (and the corresponding instantiation definitions in the library itself). I think we may have a bug in our definition of `_LIBCPP_EXTERN_TEMPLATE_TYPE_VIS`. Can you try applying https://reviews.llvm.org/P8003 and let me know if that fixes the link errors?


https://reviews.llvm.org/D35326





More information about the llvm-commits mailing list