diff --git a/libcxx/include/typeinfo b/libcxx/include/typeinfo --- a/libcxx/include/typeinfo +++ b/libcxx/include/typeinfo @@ -248,13 +248,13 @@ static bool __eq(__type_name_t __lhs, __type_name_t __rhs) _NOEXCEPT { if (__lhs == __rhs) return true; - if (__is_type_name_unique(__lhs, __rhs)) + if (__is_type_name_unique(__lhs) && __is_type_name_unique(__rhs)) return false; return __builtin_strcmp(__type_name_to_string(__lhs), __type_name_to_string(__rhs)) == 0; } _LIBCPP_INLINE_VISIBILITY _LIBCPP_ALWAYS_INLINE static bool __lt(__type_name_t __lhs, __type_name_t __rhs) _NOEXCEPT { - if (__is_type_name_unique(__lhs, __rhs)) + if (__is_type_name_unique(__lhs) && __is_type_name_unique(__rhs)) return __lhs < __rhs; return __builtin_strcmp(__type_name_to_string(__lhs), __type_name_to_string(__rhs)) < 0; } @@ -269,10 +269,6 @@ static bool __is_type_name_unique(__type_name_t __lhs) _NOEXCEPT { return !(__lhs & __non_unique_rtti_bit::value); } - _LIBCPP_INLINE_VISIBILITY - static bool __is_type_name_unique(__type_name_t __lhs, __type_name_t __rhs) _NOEXCEPT { - return !((__lhs & __rhs) & __non_unique_rtti_bit::value); - } }; typedef