compnerd accepted this revision.
compnerd added inline comments.
This revision is now accepted and ready to land.


================
Comment at: include/experimental/__config:57
 
+#if defined(_LIBCPP_OBJECT_FORMAT_COFF)
+# define _LIBCPPX_TYPE_VIS
----------------
hamzasood wrote:
> smeenai wrote:
> > I think it would make more sense to make these macros empty on all 
> > platforms, not just Windows. It's true that they'll only cause link errors 
> > on Windows (since you'll attempt to dllimport functions from a static 
> > library), but on ELF and Mach-O, the visibility annotations would cause 
> > these functions to be exported from whatever library c++experimental gets 
> > linked into, which is probably not desirable either.
> > 
> > The exception (if you'll pardon the pun) is `_LIBCPPX_EXCEPTION_ABI`, which 
> > will still need to expand to at least `__type_visibility__((default))` for 
> > non-COFF in order for throwing and catching those types to work correctly.
> I might be mistaken, but I think the regular libc++ library still uses 
> visibility annotations when it's being built as a static library on 
> non-Windows platforms. So I figured it'd be best to match that behaviour.
It's not about matching that behaviour, libc++ is built shared, this is built 
static.  The static link marked default visibility would make the functions be 
re-exported.  However, if I'm not mistaken, this already happens today, so 
fixing that in a follow-up is fine as the status quo is maintained.


https://reviews.llvm.org/D37182



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to