summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/typeinfo6
-rw-r--r--libcxx/src/support/runtime/exception_msvc.ipp2
-rw-r--r--libcxx/src/typeinfo.cpp5
3 files changed, 10 insertions, 3 deletions
diff --git a/libcxx/include/typeinfo b/libcxx/include/typeinfo
index 7e8d3990ed9..74d94e9e397 100644
--- a/libcxx/include/typeinfo
+++ b/libcxx/include/typeinfo
@@ -69,6 +69,10 @@ public:
#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 @@ public:
} // std
+#endif // defined(_LIBCPP_ABI_MICROSOFT) && !defined(_LIBCPP_NO_VCRUNTIME)
+
_LIBCPP_BEGIN_NAMESPACE_STD
_LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE
void __throw_bad_cast()
diff --git a/libcxx/src/support/runtime/exception_msvc.ipp b/libcxx/src/support/runtime/exception_msvc.ipp
index 854d3864f79..87d5a66fc8f 100644
--- a/libcxx/src/support/runtime/exception_msvc.ipp
+++ b/libcxx/src/support/runtime/exception_msvc.ipp
@@ -97,6 +97,7 @@ bad_array_length::what() const _NOEXCEPT
return "bad_array_length";
}
+#if defined(_LIBCPP_NO_VCRUNTIME)
bad_cast::bad_cast() _NOEXCEPT
{
}
@@ -125,7 +126,6 @@ bad_typeid::what() const _NOEXCEPT
return "std::bad_typeid";
}
-#if defined(_LIBCPP_NO_VCRUNTIME)
exception::~exception() _NOEXCEPT
{
}
diff --git a/libcxx/src/typeinfo.cpp b/libcxx/src/typeinfo.cpp
index 0cb193b77d9..42ff9351ed2 100644
--- a/libcxx/src/typeinfo.cpp
+++ b/libcxx/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 @@ size_t std::type_info::hash_code() const _NOEXCEPT {
// 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()
{
OpenPOWER on IntegriCloud