From 88c15c9d6f17a8919f32c23f89f7e634039e34c7 Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Tue, 19 Jan 2016 23:40:49 +0000 Subject: [PATCH] Revert r258222 because it's missing files. Will re-commit complete patch llvm-svn: 258228 --- libcxxabi/src/private_typeinfo.cpp | 38 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/libcxxabi/src/private_typeinfo.cpp b/libcxxabi/src/private_typeinfo.cpp index df03596e8b6e..beacd701d515 100644 --- a/libcxxabi/src/private_typeinfo.cpp +++ b/libcxxabi/src/private_typeinfo.cpp @@ -34,12 +34,9 @@ // // _LIBCXX_DYNAMIC_FALLBACK is currently off by default. - -#include - - #ifdef _LIBCXX_DYNAMIC_FALLBACK #include "abort_message.h" +#include #include #endif @@ -60,19 +57,31 @@ namespace __cxxabiv1 #pragma GCC visibility push(hidden) +#ifdef _LIBCXX_DYNAMIC_FALLBACK + inline bool is_equal(const std::type_info* x, const std::type_info* y, bool use_strcmp) { -#ifndef _WIN32 if (!use_strcmp) return x == y; return strcmp(x->name(), y->name()) == 0; -#else - return (x == y) || (strcmp(x->name(), y->name()) == 0); -#endif } +#else // !_LIBCXX_DYNAMIC_FALLBACK + +inline +bool +is_equal(const std::type_info* x, const std::type_info* y, bool) +{ +#ifndef _WIN32 + return x == y; +#else + return (x == y) || (strcmp(x->name(), y->name()) == 0); +#endif +} + +#endif // _LIBCXX_DYNAMIC_FALLBACK // __shim_type_info @@ -342,17 +351,8 @@ bool __pbase_type_info::can_catch(const __shim_type_info* thrown_type, void*&) const { - if (is_equal(thrown_type, &typeid(std::nullptr_t), false)) return true; - bool use_strcmp = this->__flags & (__incomplete_class_mask | - __incomplete_mask); - if (!use_strcmp) { - const __pbase_type_info* thrown_pbase = dynamic_cast( - thrown_type); - if (!thrown_pbase) return false; - use_strcmp = thrown_pbase->__flags & (__incomplete_class_mask | - __incomplete_mask); - } - return is_equal(this, thrown_type, use_strcmp); + return is_equal(this, thrown_type, false) || + is_equal(thrown_type, &typeid(std::nullptr_t), false); } #ifdef __clang__