[PATCH] D42220: libcxx: Use vcruntime declarations for typeinfo on Windows.

Peter Collingbourne via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jan 25 17:24:35 PST 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rCXX323491: libcxx: Use vcruntime declarations for typeinfo on Windows. (authored by pcc, committed by ).
Herald added a subscriber: cfe-commits.

Changed prior to commit:
  https://reviews.llvm.org/D42220?vs=130343&id=131524#toc

Repository:
  rCXX libc++

https://reviews.llvm.org/D42220

Files:
  include/typeinfo
  src/support/runtime/exception_msvc.ipp
  src/typeinfo.cpp


Index: src/typeinfo.cpp
===================================================================
--- src/typeinfo.cpp
+++ src/typeinfo.cpp
@@ -9,7 +9,7 @@
 
 #include "typeinfo"
 
-#if defined(_LIBCPP_ABI_MICROSOFT)
+#if defined(_LIBCPP_ABI_MICROSOFT) && defined(_LIBCPP_NO_VCRUNTIME)
 #include <string.h>
 
 int std::type_info::__compare(const type_info &__rhs) const _NOEXCEPT {
@@ -49,7 +49,8 @@
 // FIXME: Remove __APPLE__ default here once buildit is gone.
 // FIXME: Remove the _LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY configuration.
 #if (!defined(LIBCXX_BUILDING_LIBCXXABI) && !defined(LIBCXXRT) &&              \
-     !defined(__GLIBCXX__) && !defined(__APPLE__)) ||                          \
+     !defined(__GLIBCXX__) && !defined(__APPLE__) &&                           \
+     !(defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME))) ||   \
     defined(_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY)
 std::type_info::~type_info()
 {
Index: src/support/runtime/exception_msvc.ipp
===================================================================
--- src/support/runtime/exception_msvc.ipp
+++ src/support/runtime/exception_msvc.ipp
@@ -97,6 +97,7 @@
     return "bad_array_length";
 }
 
+#if defined(_LIBCPP_NO_VCRUNTIME)
 bad_cast::bad_cast() _NOEXCEPT
 {
 }
@@ -125,7 +126,6 @@
   return "std::bad_typeid";
 }
 
-#if defined(_LIBCPP_NO_VCRUNTIME)
 exception::~exception() _NOEXCEPT
 {
 }
Index: include/typeinfo
===================================================================
--- include/typeinfo
+++ include/typeinfo
@@ -69,6 +69,10 @@
 #pragma GCC system_header
 #endif
 
+#if defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME)
+#include <vcruntime_typeinfo.h>
+#else
+
 #if !defined(_LIBCPP_ABI_MICROSOFT)
 #if defined(_LIBCPP_NONUNIQUE_RTTI_BIT)
 #define _LIBCPP_HAS_NONUNIQUE_TYPEINFO
@@ -219,6 +223,8 @@
 
 }  // std
 
+#endif // defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME)
+
 _LIBCPP_BEGIN_NAMESPACE_STD
 _LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE
 void __throw_bad_cast()


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42220.131524.patch
Type: text/x-patch
Size: 2033 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180126/f5b423bf/attachment.bin>


More information about the cfe-commits mailing list