[PATCH] D25042: [libc++] Clarify _LIBCPP_NEW_DELETE_VIS for Windows
Shoaib Meenai via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 28 15:12:12 PDT 2016
smeenai updated this revision to Diff 72911.
smeenai added a comment.
Moving documentation to documentation file, per @EricWF's comment
https://reviews.llvm.org/D25042
Files:
docs/DesignDocs/VisibilityMacros.rst
include/new
Index: include/new
===================================================================
--- include/new
+++ include/new
@@ -125,8 +125,8 @@
} // std
-#if defined(_WIN32) && !defined(cxx_EXPORTS)
-# define _LIBCPP_NEW_DELETE_VIS _LIBCPP_FUNC_VIS_ONLY
+#if defined(_LIBCPP_MSVCRT) && !defined(_LIBCPP_BUILDING_LIBRARY)
+# define _LIBCPP_NEW_DELETE_VIS
#else
# define _LIBCPP_NEW_DELETE_VIS _LIBCPP_FUNC_VIS
#endif
Index: docs/DesignDocs/VisibilityMacros.rst
===================================================================
--- docs/DesignDocs/VisibilityMacros.rst
+++ docs/DesignDocs/VisibilityMacros.rst
@@ -108,6 +108,19 @@
versioning namespace. This allows throwing and catching some exception types
between libc++ and libstdc++.
+**_LIBCPP_NEW_DELETE_VIS**
+ Mark a symbol as being exported by the libc++ library. This macro must be
+ applied to all `operator new` and `operator delete` overloads.
+
+ **Windows Behavior**: When using the Microsoft CRT, all the `operator new` and
+ `operator delete` overloads are defined statically in `msvcrt.lib`. Marking
+ them as `dllimport` in the libc++ `<new>` header is therefore undesirable: if
+ we were to mark them as `dllimport` and then link against libc++, source files
+ which included `<new>` would end up linking against libc++'s `operator new`
+ and `operator delete`, while source files which did not include `<new>` would
+ end up linking against msvcrt's `operator new` and `operator delete`, which
+ would be a confusing and potentially error-prone inconsistency.
+
Links
=====
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25042.72911.patch
Type: text/x-patch
Size: 1571 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160928/9bdfe25a/attachment.bin>
More information about the cfe-commits
mailing list