[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