[libcxx-commits] [libcxx] ee78181 - [libc++] Remove macros for IBM compiler

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jun 14 06:15:46 PDT 2022


Author: Louis Dionne
Date: 2022-06-14T09:15:41-04:00
New Revision: ee78181f34ca6abe9b88dd1ccf97816e434e675d

URL: https://github.com/llvm/llvm-project/commit/ee78181f34ca6abe9b88dd1ccf97816e434e675d
DIFF: https://github.com/llvm/llvm-project/commit/ee78181f34ca6abe9b88dd1ccf97816e434e675d.diff

LOG: [libc++] Remove macros for IBM compiler

It's not tested or used anymore -- instead a Clang-based compiler is
used on IBM nowadays.

Differential Revision: https://reviews.llvm.org/D127650

Added: 
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.compile.pass.cpp
    libcxx/test/std/strings/string.classes/typedefs.compile.pass.cpp

Modified: 
    libcxx/include/__config
    libcxx/include/__functional/hash.h
    libcxx/include/__string/char_traits.h
    libcxx/include/__type_traits/is_integral.h
    libcxx/include/__utility/cmp.h
    libcxx/include/iosfwd
    libcxx/include/string
    libcxx/test/libcxx/strings/basic.string/string.capacity/max_size.pass.cpp
    libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string.pass.cpp
    libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_non_unicode.pass.cpp
    libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp
    libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp
    libcxx/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp
    libcxx/test/std/language.support/cmp/cmp.concept/three_way_comparable.compile.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp
    libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp
    libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
    libcxx/test/std/strings/basic.string.hash/strings.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
    libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp
    libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
    libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
    libcxx/test/std/utilities/format/format.arguments/format.arg/ctor.pass.cpp
    libcxx/test/std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp
    libcxx/test/std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp
    libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/advance_to.pass.cpp
    libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/begin.pass.cpp
    libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/ctor.pass.cpp
    libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/end.pass.cpp
    libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp
    libcxx/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp
    libcxx/test/support/atomic_helpers.h
    libcxx/test/support/poisoned_hash_helper.h
    libcxx/test/support/test.support/make_string_header.pass.cpp
    libcxx/test/support/test_macros.h

Removed: 
    libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.pass.cpp
    libcxx/test/std/strings/string.classes/typedefs.pass.cpp


################################################################################
diff  --git a/libcxx/include/__config b/libcxx/include/__config
index f075441ae44fa..a8f84de50fb48 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -206,8 +206,6 @@
 #    define _LIBCPP_COMPILER_GCC
 #  elif defined(_MSC_VER)
 #    define _LIBCPP_COMPILER_MSVC
-#  elif defined(__IBMCPP__)
-#    define _LIBCPP_COMPILER_IBM
 #  endif
 
 #  if defined(_LIBCPP_COMPILER_GCC) && __cplusplus < 201103L
@@ -510,28 +508,7 @@ typedef __char32_t char32_t;
 
 #    define _LIBCPP_DISABLE_EXTENSION_WARNING
 
-#  elif defined(_LIBCPP_COMPILER_IBM)
-
-#    define _ALIGNAS(x) __attribute__((__aligned__(x)))
-#    define _ALIGNAS_TYPE(x) __attribute__((__aligned__(_LIBCPP_ALIGNOF(x))))
-#    define _ATTRIBUTE(x) __attribute__((x))
-#    define _LIBCPP_NORETURN __attribute__((noreturn))
-
-#    define _LIBCPP_HAS_NO_UNICODE_CHARS
-
-#    if defined(_AIX)
-#      define __MULTILOCALE_API
-#    endif
-
-#    define _LIBCPP_HAS_NO_ASAN
-
-#    define _LIBCPP_ALWAYS_INLINE __attribute__((__always_inline__))
-
-#    define _LIBCPP_HAS_NO_VECTOR_EXTENSION
-
-#    define _LIBCPP_DISABLE_EXTENSION_WARNING
-
-#  endif // _LIBCPP_COMPILER_[CLANG|GCC|MSVC|IBM]
+#  endif // _LIBCPP_COMPILER_[CLANG|GCC|MSVC]
 
 #  if defined(_LIBCPP_OBJECT_FORMAT_COFF)
 
@@ -747,11 +724,6 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD
 #    define _NOEXCEPT_(x)
 #  endif
 
-#  ifdef _LIBCPP_HAS_NO_UNICODE_CHARS
-    typedef unsigned short char16_t;
-typedef unsigned int char32_t;
-#  endif
-
 #  ifndef __SIZEOF_INT128__
 #    define _LIBCPP_HAS_NO_INT128
 #  endif

diff  --git a/libcxx/include/__functional/hash.h b/libcxx/include/__functional/hash.h
index 2b3b96e534216..f1d5e27343a07 100644
--- a/libcxx/include/__functional/hash.h
+++ b/libcxx/include/__functional/hash.h
@@ -525,8 +525,6 @@ _LIBCPP_SUPPRESS_DEPRECATED_POP
 };
 #endif // !_LIBCPP_HAS_NO_CHAR8_T
 
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
 template <>
 struct _LIBCPP_TEMPLATE_VIS hash<char16_t>
@@ -559,8 +557,6 @@ _LIBCPP_SUPPRESS_DEPRECATED_POP
     size_t operator()(char32_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
 };
 
-#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
-
 #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
 template <>

diff  --git a/libcxx/include/__string/char_traits.h b/libcxx/include/__string/char_traits.h
index ce3f500cf8e05..457a771b94cf3 100644
--- a/libcxx/include/__string/char_traits.h
+++ b/libcxx/include/__string/char_traits.h
@@ -516,8 +516,6 @@ char_traits<char8_t>::find(const char_type* __s, size_t __n, const char_type& __
 
 #endif // _LIBCPP_HAS_NO_CHAR8_T
 
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-
 template <>
 struct _LIBCPP_TEMPLATE_VIS char_traits<char16_t>
 {
@@ -698,8 +696,6 @@ char_traits<char32_t>::find(const char_type* __s, size_t __n, const char_type& _
     return nullptr;
 }
 
-#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
-
 // helper fns for basic_string and string_view
 
 // __str_find

diff  --git a/libcxx/include/__type_traits/is_integral.h b/libcxx/include/__type_traits/is_integral.h
index 7df964f992851..09378735d94e3 100644
--- a/libcxx/include/__type_traits/is_integral.h
+++ b/libcxx/include/__type_traits/is_integral.h
@@ -30,10 +30,8 @@ template <>          struct __libcpp_is_integral<wchar_t>            { enum { va
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
 template <>          struct __libcpp_is_integral<char8_t>            { enum { value = 1 }; };
 #endif
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 template <>          struct __libcpp_is_integral<char16_t>           { enum { value = 1 }; };
 template <>          struct __libcpp_is_integral<char32_t>           { enum { value = 1 }; };
-#endif
 template <>          struct __libcpp_is_integral<short>              { enum { value = 1 }; };
 template <>          struct __libcpp_is_integral<unsigned short>     { enum { value = 1 }; };
 template <>          struct __libcpp_is_integral<int>                { enum { value = 1 }; };

diff  --git a/libcxx/include/__utility/cmp.h b/libcxx/include/__utility/cmp.h
index 5a8121d8a6f01..3cfd98106705f 100644
--- a/libcxx/include/__utility/cmp.h
+++ b/libcxx/include/__utility/cmp.h
@@ -30,13 +30,10 @@ struct _IsSameAsAny : _Or<_IsSame<_Tp, _Up>...> {};
 
 template<class _Tp>
 concept __is_safe_integral_cmp = is_integral_v<_Tp> &&
-                      !_IsSameAsAny<_Tp, bool, char
+                      !_IsSameAsAny<_Tp, bool, char, char16_t, char32_t
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
                                     , char8_t
 #endif
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-                                    , char16_t, char32_t
-#endif
 #ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
                                     , wchar_t
 #endif

diff  --git a/libcxx/include/iosfwd b/libcxx/include/iosfwd
index 6cb55868c6be4..9cd9450e62e94 100644
--- a/libcxx/include/iosfwd
+++ b/libcxx/include/iosfwd
@@ -232,10 +232,8 @@ typedef fpos<mbstate_t>    wstreampos;
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
 typedef fpos<mbstate_t>    u8streampos;
 #endif
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 typedef fpos<mbstate_t>    u16streampos;
 typedef fpos<mbstate_t>    u32streampos;
-#endif
 
 #if defined(_NEWLIB_VERSION)
 // On newlib, off_t is 'long int'

diff  --git a/libcxx/include/string b/libcxx/include/string
index 9cfbb5f2ff547..fa939af8123da 100644
--- a/libcxx/include/string
+++ b/libcxx/include/string
@@ -540,6 +540,7 @@ basic_string<char32_t> operator "" s( const char32_t *str, size_t len );
 #include <__utility/unreachable.h>
 #include <climits>
 #include <compare>
+#include <cstdint>
 #include <cstdio>  // EOF
 #include <cstdlib>
 #include <cstring>
@@ -557,10 +558,6 @@ basic_string<char32_t> operator "" s( const char32_t *str, size_t len );
 #  include <cwchar>
 #endif
 
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
-#  include <cstdint>
-#endif
-
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
 #endif
@@ -621,11 +618,8 @@ struct __can_be_converted_to_string_view : public _BoolConstant<
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
 typedef basic_string<char8_t> u8string;
 #endif
-
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
 typedef basic_string<char16_t> u16string;
 typedef basic_string<char32_t> u32string;
-#endif
 
 struct __uninitialized_size_tag {};
 
@@ -635,10 +629,8 @@ class
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
     _LIBCPP_PREFERRED_NAME(u8string)
 #endif
-#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
     _LIBCPP_PREFERRED_NAME(u16string)
     _LIBCPP_PREFERRED_NAME(u32string)
-#endif
     basic_string
 {
 public:

diff  --git a/libcxx/test/libcxx/strings/basic.string/string.capacity/max_size.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.capacity/max_size.pass.cpp
index bb9eddb59526a..4d6248b9af1d1 100644
--- a/libcxx/test/libcxx/strings/basic.string/string.capacity/max_size.pass.cpp
+++ b/libcxx/test/libcxx/strings/basic.string/string.capacity/max_size.pass.cpp
@@ -34,12 +34,10 @@ void full_size() {
   assert(wstr.max_size() == std::numeric_limits<size_t>::max() / sizeof(wchar_t) - alignment);
 #endif
 
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   std::u16string u16str;
   std::u32string u32str;
   assert(u16str.max_size() == std::numeric_limits<size_t>::max() / 2 - alignment);
   assert(u32str.max_size() == std::numeric_limits<size_t>::max() / 4 - alignment);
-#endif
 }
 
 void half_size() {
@@ -56,12 +54,10 @@ void half_size() {
   assert(wstr.max_size() == std::numeric_limits<size_t>::max() / std::max<size_t>(2ul, sizeof(wchar_t)) - alignment);
 #endif
 
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   std::u16string u16str;
   std::u32string u32str;
   assert(u16str.max_size() == std::numeric_limits<size_t>::max() / 2 - alignment);
   assert(u32str.max_size() == std::numeric_limits<size_t>::max() / 4 - alignment);
-#endif
 }
 
 bool test() {

diff  --git a/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string.pass.cpp b/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string.pass.cpp
index cdda977e92ad7..1c3d3716c62a6 100644
--- a/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string.pass.cpp
+++ b/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string.pass.cpp
@@ -340,10 +340,8 @@ constexpr bool test() {
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<char8_t>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test<char16_t>();
   test<char32_t>();
-#endif
 
   return true;
 }

diff  --git a/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_non_unicode.pass.cpp b/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_non_unicode.pass.cpp
index bb6d10fdf3115..6baa55a1fd18e 100644
--- a/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_non_unicode.pass.cpp
+++ b/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_non_unicode.pass.cpp
@@ -96,10 +96,8 @@ constexpr bool test() {
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<char8_t>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test<char16_t>();
   test<char32_t>();
-#endif
   return true;
 }
 

diff  --git a/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp b/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp
index df55737881c24..4e4c22cfcff07 100644
--- a/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp
+++ b/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp
@@ -253,10 +253,8 @@ constexpr bool test() {
 #ifndef _LIBCPP_HAS_NO_CHAR8_T
   test<char8_t>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test<char16_t>();
   test<char32_t>();
-#endif
   return true;
 }
 

diff  --git a/libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp b/libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp
index c90d52823ec1f..34559f0e1382c 100644
--- a/libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp
+++ b/libcxx/test/std/atomics/atomics.types.generic/integral.pass.cpp
@@ -177,10 +177,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<std::atomic_char8_t, char8_t>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<std::atomic_char16_t, char16_t>();
     test<std::atomic_char32_t, char32_t>();
-#endif
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::atomic_wchar_t, wchar_t>();
 #endif
@@ -205,10 +203,8 @@ int main(int, char**)
     test<volatile std::atomic_ulong, unsigned long>();
     test<volatile std::atomic_llong, long long>();
     test<volatile std::atomic_ullong, unsigned long long>();
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<volatile std::atomic_char16_t, char16_t>();
     test<volatile std::atomic_char32_t, char32_t>();
-#endif
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<volatile std::atomic_wchar_t, wchar_t>();
 #endif

diff  --git a/libcxx/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp b/libcxx/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp
index 95816763141f9..92bef95946979 100644
--- a/libcxx/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp
+++ b/libcxx/test/std/atomics/atomics.types.generic/integral_typedefs.pass.cpp
@@ -60,10 +60,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     static_assert((std::is_same<std::atomic<char8_t>, std::atomic_char8_t>::value), "");
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     static_assert((std::is_same<std::atomic<char16_t>, std::atomic_char16_t>::value), "");
     static_assert((std::is_same<std::atomic<char32_t>, std::atomic_char32_t>::value), "");
-#endif
 
 //  Added by LWG 2441
     static_assert((std::is_same<std::atomic<intptr_t>,  std::atomic_intptr_t>::value), "");

diff  --git a/libcxx/test/std/language.support/cmp/cmp.concept/three_way_comparable.compile.pass.cpp b/libcxx/test/std/language.support/cmp/cmp.concept/three_way_comparable.compile.pass.cpp
index d8c683b4af249..d1114e540052f 100644
--- a/libcxx/test/std/language.support/cmp/cmp.concept/three_way_comparable.compile.pass.cpp
+++ b/libcxx/test/std/language.support/cmp/cmp.concept/three_way_comparable.compile.pass.cpp
@@ -29,10 +29,8 @@ static_assert(std::three_way_comparable<wchar_t&>);
 #ifndef TEST_HAS_NO_CHAR8_T
 static_assert(std::three_way_comparable<char8_t const&>);
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 static_assert(std::three_way_comparable<char16_t volatile&>);
 static_assert(std::three_way_comparable<char32_t const volatile&>);
-#endif
 #ifndef TEST_HAS_NO_INT128
 static_assert(std::three_way_comparable<__int128_t const&>);
 static_assert(std::three_way_comparable<__uint128_t const&>);

diff  --git a/libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp
index adf4e8cbc502a..3f3ecbd336dcd 100644
--- a/libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/is_specialized.pass.cpp
@@ -49,10 +49,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>();
     test<char32_t>();
-#endif
     test<signed char>();
     test<unsigned char>();
     test<signed short>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp
index 667bfc178e7a6..3fb4074deb9d1 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/denorm_min.pass.cpp
@@ -36,10 +36,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(0);
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>(0);
     test<char32_t>(0);
-#endif
     test<short>(0);
     test<unsigned short>(0);
     test<int>(0);

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp
index c6964e6ec4e09..4608a3d01ba14 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits.pass.cpp
@@ -35,10 +35,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, 8>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, 16>();
     test<char32_t, 32>();
-#endif
     test<short, 15>();
     test<unsigned short, 16>();
     test<int, 31>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp
index 6f835a6de2357..41f134a706bcd 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/digits10.pass.cpp
@@ -39,10 +39,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, 2>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, 4>();
     test<char32_t, 9>();
-#endif
     test<short, 4>();
     test<unsigned short, 4>();
     test<int, 9>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp
index 19f5ca75c26c2..d5f3bb0141b95 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/epsilon.pass.cpp
@@ -36,10 +36,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(0);
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>(0);
     test<char32_t>(0);
-#endif
     test<short>(0);
     test<unsigned short>(0);
     test<int>(0);

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
index 08cc7e8d74646..7ca5a3defa8c0 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, std::denorm_absent>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, std::denorm_absent>();
     test<char32_t, std::denorm_absent>();
-#endif
     test<short, std::denorm_absent>();
     test<unsigned short, std::denorm_absent>();
     test<int, std::denorm_absent>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
index 815c684cf96f8..7b88f3c2b292d 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, false>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, false>();
     test<char32_t, false>();
-#endif
     test<short, false>();
     test<unsigned short, false>();
     test<int, false>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp
index 48893b9260530..660953e24e040 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_infinity.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, false>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, false>();
     test<char32_t, false>();
-#endif
     test<short, false>();
     test<unsigned short, false>();
     test<int, false>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp
index 642234dd0c911..5a81863efa817 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_quiet_NaN.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, false>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, false>();
     test<char32_t, false>();
-#endif
     test<short, false>();
     test<unsigned short, false>();
     test<int, false>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp
index cbd63bdcd11a1..ac4099ef7627f 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/has_signaling_NaN.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, false>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, false>();
     test<char32_t, false>();
-#endif
     test<short, false>();
     test<unsigned short, false>();
     test<int, false>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp
index af7a526812565..93c6765e5c044 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/infinity.pass.cpp
@@ -38,10 +38,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(0);
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>(0);
     test<char32_t>(0);
-#endif
     test<short>(0);
     test<unsigned short>(0);
     test<int>(0);

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp
index 56d93be63becb..ebbd8cccee68a 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_bounded.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, true>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, true>();
     test<char32_t, true>();
-#endif
     test<short, true>();
     test<unsigned short, true>();
     test<int, true>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp
index 4c465be846572..b48cb78c12eb9 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_exact.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, true>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, true>();
     test<char32_t, true>();
-#endif
     test<short, true>();
     test<unsigned short, true>();
     test<int, true>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp
index 2f635ef4423ca..37f217ee84898 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_iec559.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, false>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, false>();
     test<char32_t, false>();
-#endif
     test<short, false>();
     test<unsigned short, false>();
     test<int, false>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp
index b8f038c70ce0e..d2763a2a8bed7 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_integer.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, true>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, true>();
     test<char32_t, true>();
-#endif
     test<short, true>();
     test<unsigned short, true>();
     test<int, true>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp
index e4ae9c769f488..962f54c15ade2 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_modulo.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, true>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, true>();
     test<char32_t, true>();
-#endif
     test<short, false>();
     test<unsigned short, true>();
     test<int, false>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp
index 9c90019dc26d2..5728804e6d482 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/is_signed.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, false>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, false>();
     test<char32_t, false>();
-#endif
     test<short, true>();
     test<unsigned short, false>();
     test<int, true>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp
index 6617ebc1986ad..db0c0f1a826c7 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/lowest.pass.cpp
@@ -47,10 +47,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(0);
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>(0);
     test<char32_t>(0);
-#endif
     test<short>(SHRT_MIN);
     test<unsigned short>(0);
     test<int>(INT_MIN);

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp
index ce900fa1a34d3..2f7c1f899a73f 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max.pass.cpp
@@ -47,10 +47,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(UCHAR_MAX); // ??
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>(USHRT_MAX);
     test<char32_t>(UINT_MAX);
-#endif
     test<short>(SHRT_MAX);
     test<unsigned short>(USHRT_MAX);
     test<int>(INT_MAX);

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp
index 2ed75f2f60b42..b29d485846631 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_digits10.pass.cpp
@@ -35,10 +35,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, 0>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, 0>();
     test<char32_t, 0>();
-#endif
     test<short, 0>();
     test<unsigned short, 0>();
     test<int, 0>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp
index 40c67fc14cd53..9288eb4042b22 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent.pass.cpp
@@ -35,10 +35,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, 0>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, 0>();
     test<char32_t, 0>();
-#endif
     test<short, 0>();
     test<unsigned short, 0>();
     test<int, 0>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp
index 8ca9b6f91a378..28ecc86c4cf37 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/max_exponent10.pass.cpp
@@ -35,10 +35,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, 0>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, 0>();
     test<char32_t, 0>();
-#endif
     test<short, 0>();
     test<unsigned short, 0>();
     test<int, 0>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp
index c832a2ba549ae..09877362447bc 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min.pass.cpp
@@ -47,10 +47,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(0);
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>(0);
     test<char32_t>(0);
-#endif
     test<short>(SHRT_MIN);
     test<unsigned short>(0);
     test<int>(INT_MIN);

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp
index 3f3c0a39643be..806724806032e 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent.pass.cpp
@@ -35,10 +35,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, 0>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, 0>();
     test<char32_t, 0>();
-#endif
     test<short, 0>();
     test<unsigned short, 0>();
     test<int, 0>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp
index bf84646150e0f..2f9d8a490a29d 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/min_exponent10.pass.cpp
@@ -35,10 +35,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, 0>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, 0>();
     test<char32_t, 0>();
-#endif
     test<short, 0>();
     test<unsigned short, 0>();
     test<int, 0>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp
index 5ead16d8b79df..a34b77688d146 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/quiet_NaN.pass.cpp
@@ -55,10 +55,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>();
     test<char32_t>();
-#endif
     test<short>();
     test<unsigned short>();
     test<int>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp
index d9084fcf223ae..c7e33eafcb465 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/radix.pass.cpp
@@ -35,10 +35,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, 2>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, 2>();
     test<char32_t, 2>();
-#endif
     test<short, 2>();
     test<unsigned short, 2>();
     test<int, 2>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp
index 0649aac8c0c9e..bf1b13e4384ac 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_error.pass.cpp
@@ -36,10 +36,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>(0);
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>(0);
     test<char32_t>(0);
-#endif
     test<short>(0);
     test<unsigned short>(0);
     test<int>(0);

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp
index 065621b526e26..5b0b745ac5ab0 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/round_style.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, std::round_toward_zero>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, std::round_toward_zero>();
     test<char32_t, std::round_toward_zero>();
-#endif
     test<short, std::round_toward_zero>();
     test<unsigned short, std::round_toward_zero>();
     test<int, std::round_toward_zero>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp
index c9cdaabc7ec2a..6c629a211660a 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/signaling_NaN.pass.cpp
@@ -55,10 +55,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t>();
     test<char32_t>();
-#endif // TEST_HAS_NO_UNICODE_CHARS
     test<short>();
     test<unsigned short>();
     test<int>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp
index 3231a63a54bde..9cfc8e8e067d7 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/tinyness_before.pass.cpp
@@ -34,10 +34,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, false>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, false>();
     test<char32_t, false>();
-#endif
     test<short, false>();
     test<unsigned short, false>();
     test<int, false>();

diff  --git a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp
index 5d31958f36a92..a9b1e44602bd2 100644
--- a/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/limits/numeric.limits.members/traps.pass.cpp
@@ -41,10 +41,8 @@ int main(int, char**)
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     test<char8_t, integral_types_trap>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<char16_t, integral_types_trap>();
     test<char32_t, integral_types_trap>();
-#endif
     test<short, integral_types_trap>();
     test<unsigned short, integral_types_trap>();
     test<int, integral_types_trap>();

diff  --git a/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp b/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
index b8eaedaab4639..5bc3a23e2de03 100644
--- a/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
+++ b/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp
@@ -29,10 +29,8 @@ int main(int, char**) {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test_hash_enabled_for_type<std::u8string>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test_hash_enabled_for_type<std::u16string>();
     test_hash_enabled_for_type<std::u32string>();
-#endif
   }
 
   return 0;

diff  --git a/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp b/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp
index 3b272d3a3eb29..6f902499d162b 100644
--- a/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp
+++ b/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp
@@ -46,10 +46,8 @@ int main(int, char**)
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test<std::u8string>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<std::u16string>();
     test<std::u32string>();
-#endif
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::wstring>();
 #endif

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
index ea976e176bcf5..23901440fd4c7 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp
@@ -29,7 +29,6 @@ constexpr bool test_constexpr()
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     char16_t c = u'\0';
     std::char_traits<char16_t>::assign(c, u'a');
@@ -39,7 +38,6 @@ int main(int, char**)
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
   return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp
index 972c060755479..bab76a6c931ce 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp
@@ -19,14 +19,12 @@
 
 TEST_CONSTEXPR_CXX20 bool test()
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     char16_t s2[3] = {0};
     assert(std::char_traits<char16_t>::assign(s2, 3, char16_t(5)) == s2);
     assert(s2[0] == char16_t(5));
     assert(s2[1] == char16_t(5));
     assert(s2[2] == char16_t(5));
     assert(std::char_traits<char16_t>::assign(NULL, 0, char16_t(5)) == NULL);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
   return true;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
index cea2d7ee9d971..00664b7b2e7d5 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp
@@ -30,7 +30,6 @@ constexpr bool test_constexpr()
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char16_t>::compare(u"", u"", 0) == 0);
     assert(std::char_traits<char16_t>::compare(NULL, NULL, 0) == 0);
@@ -57,7 +56,6 @@ int main(int, char**)
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
   return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp
index e6d90ad22de93..fc0ab1aced898 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp
@@ -19,7 +19,6 @@
 
 TEST_CONSTEXPR_CXX20 bool test()
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     char16_t s1[] = {1, 2, 3};
     char16_t s2[3] = {0};
     assert(std::char_traits<char16_t>::copy(s2, s1, 3) == s2);
@@ -28,9 +27,8 @@ TEST_CONSTEXPR_CXX20 bool test()
     assert(s2[2] == char16_t(3));
     assert(std::char_traits<char16_t>::copy(NULL, s1, 0) == NULL);
     assert(std::char_traits<char16_t>::copy(s1, NULL, 0) == s1);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return true;
+    return true;
 }
 
 int main(int, char**)
@@ -41,5 +39,5 @@ int main(int, char**)
     static_assert(test());
 #endif
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp
index cf9fc0729a27c..8996cc9d67bf4 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp
@@ -13,16 +13,10 @@
 // static constexpr int_type eof();
 
 #include <string>
-#include <cassert>
-
-#include "test_macros.h"
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     std::char_traits<char16_t>::int_type i = std::char_traits<char16_t>::eof();
     ((void)i); // Prevent unused warning
-#endif
-
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
index ae4caeb4c6a28..540ee40c3b0cc 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp
@@ -12,19 +12,14 @@
 
 // static constexpr bool eq(char_type c1, char_type c2);
 
+// UNSUPPORTED: c++03
+
 #include <string>
 #include <cassert>
 
-#include "test_macros.h"
-
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
-#if TEST_STD_VER >= 11
     assert(std::char_traits<char16_t>::eq(u'a', u'a'));
     assert(!std::char_traits<char16_t>::eq(u'a', u'A'));
-#endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
-
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
index 8f49ae6763061..29760310893a2 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp
@@ -19,7 +19,6 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert( std::char_traits<char16_t>::eq_int_type(u'a', u'a'));
     assert(!std::char_traits<char16_t>::eq_int_type(u'a', u'A'));
@@ -27,7 +26,6 @@ int main(int, char**)
 #endif
     assert( std::char_traits<char16_t>::eq_int_type(std::char_traits<char16_t>::eof(),
                                                     std::char_traits<char16_t>::eof()));
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp
index bcd765a3258ef..8b39f4a30cfa3 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp
@@ -31,7 +31,6 @@ constexpr bool test_constexpr()
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     char16_t s1[] = {1, 2, 3};
     assert(std::char_traits<char16_t>::find(s1, 3, char16_t(1)) == s1);
     assert(std::char_traits<char16_t>::find(s1, 3, char16_t(2)) == s1+1);
@@ -43,7 +42,6 @@ int main(int, char**)
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
   return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
index f4a045bf2dee6..28940e6acdd77 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp
@@ -28,7 +28,6 @@ constexpr bool test_constexpr()
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char16_t>::length(u"") == 0);
     assert(std::char_traits<char16_t>::length(u"a") == 1);
@@ -40,7 +39,6 @@ int main(int, char**)
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
   return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
index 72669d4cd1713..960e6f899a4da 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp
@@ -12,19 +12,14 @@
 
 // static constexpr bool lt(char_type c1, char_type c2);
 
+// UNSUPPORTED: c++03
+
 #include <string>
 #include <cassert>
 
-#include "test_macros.h"
-
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
-#if TEST_STD_VER >= 11
     assert(!std::char_traits<char16_t>::lt(u'a', u'a'));
     assert( std::char_traits<char16_t>::lt(u'A', u'a'));
-#endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
-
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp
index b9334ba59c18d..d011d7c7fba52 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp
@@ -19,7 +19,6 @@
 
 TEST_CONSTEXPR_CXX20 bool test()
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     char16_t s1[] = {1, 2, 3};
     assert(std::char_traits<char16_t>::move(s1, s1+1, 2) == s1);
     assert(s1[0] == char16_t(2));
@@ -32,9 +31,8 @@ TEST_CONSTEXPR_CXX20 bool test()
     assert(s1[2] == char16_t(3));
     assert(std::char_traits<char16_t>::move(NULL, s1, 0) == NULL);
     assert(std::char_traits<char16_t>::move(s1, NULL, 0) == s1);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return true;
+    return true;
 }
 
 int main(int, char**)

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
index 6219f5248cb23..3db7de11e2621 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp
@@ -19,7 +19,6 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char16_t>::not_eof(u'a') == u'a');
     assert(std::char_traits<char16_t>::not_eof(u'A') == u'A');
@@ -27,7 +26,6 @@ int main(int, char**)
     assert(std::char_traits<char16_t>::not_eof(0) == 0);
     assert(std::char_traits<char16_t>::not_eof(std::char_traits<char16_t>::eof()) !=
            std::char_traits<char16_t>::eof());
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
   return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
index ba3208de57f88..89e5ba215dcc3 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp
@@ -19,13 +19,11 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char16_t>::to_char_type(u'a') == u'a');
     assert(std::char_traits<char16_t>::to_char_type(u'A') == u'A');
 #endif
     assert(std::char_traits<char16_t>::to_char_type(0) == 0);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
   return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
index e15ed90f692e3..442a2aea0757c 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp
@@ -19,13 +19,11 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char16_t>::to_int_type(u'a') == u'a');
     assert(std::char_traits<char16_t>::to_int_type(u'A') == u'A');
 #endif
     assert(std::char_traits<char16_t>::to_int_type(0) == 0);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
   return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp
index 4ccf846f15371..6624f5062a0f1 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/types.pass.cpp
@@ -24,13 +24,11 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     static_assert((std::is_same<std::char_traits<char16_t>::char_type, char16_t>::value), "");
     static_assert((std::is_same<std::char_traits<char16_t>::int_type, std::uint_least16_t>::value), "");
     static_assert((std::is_same<std::char_traits<char16_t>::off_type, std::streamoff>::value), "");
     static_assert((std::is_same<std::char_traits<char16_t>::pos_type, std::u16streampos>::value), "");
     static_assert((std::is_same<std::char_traits<char16_t>::state_type, std::mbstate_t>::value), "");
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
index 4e0fd77499556..2ecaa791b484b 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp
@@ -29,7 +29,6 @@ constexpr bool test_constexpr()
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     char32_t c = U'\0';
     std::char_traits<char32_t>::assign(c, U'a');
@@ -39,7 +38,6 @@ int main(int, char**)
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp
index 39f8e3083ca13..cf9ec1aacfbab 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp
@@ -19,16 +19,14 @@
 
 TEST_CONSTEXPR_CXX20 bool test()
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     char32_t s2[3] = {0};
     assert(std::char_traits<char32_t>::assign(s2, 3, char32_t(5)) == s2);
     assert(s2[0] == char32_t(5));
     assert(s2[1] == char32_t(5));
     assert(s2[2] == char32_t(5));
     assert(std::char_traits<char32_t>::assign(NULL, 0, char32_t(5)) == NULL);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return true;
+    return true;
 }
 
 int main(int, char**)

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
index 9b312f0693188..7cce8796c1322 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp
@@ -29,7 +29,6 @@ constexpr bool test_constexpr()
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char32_t>::compare(U"", U"", 0) == 0);
     assert(std::char_traits<char32_t>::compare(NULL, NULL, 0) == 0);
@@ -56,7 +55,6 @@ int main(int, char**)
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
   return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp
index 997a7a33766a1..f030309e038c8 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp
@@ -19,7 +19,6 @@
 
 TEST_CONSTEXPR_CXX20 bool test()
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     char32_t s1[] = {1, 2, 3};
     char32_t s2[3] = {0};
     assert(std::char_traits<char32_t>::copy(s2, s1, 3) == s2);
@@ -28,9 +27,8 @@ TEST_CONSTEXPR_CXX20 bool test()
     assert(s2[2] == char32_t(3));
     assert(std::char_traits<char32_t>::copy(NULL, s1, 0) == NULL);
     assert(std::char_traits<char32_t>::copy(s1, NULL, 0) == s1);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return true;
+    return true;
 }
 
 int main(int, char**)

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp
index 5fffcb3bc4b1a..4fe39eafbfee0 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp
@@ -19,10 +19,8 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     std::char_traits<char32_t>::int_type i = std::char_traits<char32_t>::eof();
     ((void)i); // Prevent unused warning
-#endif
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
index 5d7e153459bde..84268bbedff26 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp
@@ -12,19 +12,14 @@
 
 // static constexpr bool eq(char_type c1, char_type c2);
 
+// UNSUPPORTED: c++03
+
 #include <string>
 #include <cassert>
 
-#include "test_macros.h"
-
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
-#if TEST_STD_VER >= 11
     assert(std::char_traits<char32_t>::eq(U'a', U'a'));
     assert(!std::char_traits<char32_t>::eq(U'a', U'A'));
-#endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
-
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
index 8f2aa31942d46..c90137d17bce7 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp
@@ -19,7 +19,6 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert( std::char_traits<char32_t>::eq_int_type(U'a', U'a'));
     assert(!std::char_traits<char32_t>::eq_int_type(U'a', U'A'));
@@ -27,7 +26,6 @@ int main(int, char**)
 #endif
     assert( std::char_traits<char32_t>::eq_int_type(std::char_traits<char32_t>::eof(),
                                                     std::char_traits<char32_t>::eof()));
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp
index 566eb36520c0c..9f856bace3e92 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp
@@ -31,7 +31,6 @@ constexpr bool test_constexpr()
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     char32_t s1[] = {1, 2, 3};
     assert(std::char_traits<char32_t>::find(s1, 3, char32_t(1)) == s1);
     assert(std::char_traits<char32_t>::find(s1, 3, char32_t(2)) == s1+1);
@@ -43,7 +42,6 @@ int main(int, char**)
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
index f9e98dfdd270f..985efa146df3f 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp
@@ -28,7 +28,6 @@ constexpr bool test_constexpr()
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char32_t>::length(U"") == 0);
     assert(std::char_traits<char32_t>::length(U"a") == 1);
@@ -40,7 +39,6 @@ int main(int, char**)
 #if TEST_STD_VER > 14
     static_assert(test_constexpr(), "" );
 #endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
index 02de437fcd1b3..7d7b484bfaee4 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp
@@ -12,19 +12,14 @@
 
 // static constexpr bool lt(char_type c1, char_type c2);
 
+// UNSUPPORTED: c++03
+
 #include <string>
 #include <cassert>
 
-#include "test_macros.h"
-
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
-#if TEST_STD_VER >= 11
     assert(!std::char_traits<char32_t>::lt(U'a', U'a'));
     assert( std::char_traits<char32_t>::lt(U'A', U'a'));
-#endif
-#endif // TEST_HAS_NO_UNICODE_CHARS
-
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp
index ac31c9883085f..930a1fe2db032 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp
@@ -19,7 +19,6 @@
 
 TEST_CONSTEXPR_CXX20 bool test()
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     char32_t s1[] = {1, 2, 3};
     assert(std::char_traits<char32_t>::move(s1, s1+1, 2) == s1);
     assert(s1[0] == char32_t(2));
@@ -32,9 +31,8 @@ TEST_CONSTEXPR_CXX20 bool test()
     assert(s1[2] == char32_t(3));
     assert(std::char_traits<char32_t>::move(NULL, s1, 0) == NULL);
     assert(std::char_traits<char32_t>::move(s1, NULL, 0) == s1);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return true;
+    return true;
 }
 
 int main(int, char**)

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
index 88aed22d11cb9..7e5845436f47d 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp
@@ -19,7 +19,6 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char32_t>::not_eof(U'a') == U'a');
     assert(std::char_traits<char32_t>::not_eof(U'A') == U'A');
@@ -27,7 +26,6 @@ int main(int, char**)
     assert(std::char_traits<char32_t>::not_eof(0) == 0);
     assert(std::char_traits<char32_t>::not_eof(std::char_traits<char32_t>::eof()) !=
            std::char_traits<char32_t>::eof());
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
index fb65b6b089b6d..a01d1e5be2153 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp
@@ -19,13 +19,11 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char32_t>::to_char_type(U'a') == U'a');
     assert(std::char_traits<char32_t>::to_char_type(U'A') == U'A');
 #endif
     assert(std::char_traits<char32_t>::to_char_type(0) == 0);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
index 7d07271592ee1..a12b69008a502 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp
@@ -19,13 +19,11 @@
 
 int main(int, char**)
 {
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 #if TEST_STD_VER >= 11
     assert(std::char_traits<char32_t>::to_int_type(U'a') == U'a');
     assert(std::char_traits<char32_t>::to_int_type(U'A') == U'A');
 #endif
     assert(std::char_traits<char32_t>::to_int_type(0) == 0);
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
-  return 0;
+    return 0;
 }

diff  --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.compile.pass.cpp
similarity index 51%
rename from libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.pass.cpp
rename to libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.compile.pass.cpp
index 1a47db9e14b98..7ef1eac41501c 100644
--- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.pass.cpp
+++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/types.compile.pass.cpp
@@ -20,17 +20,8 @@
 #include <type_traits>
 #include <cstdint>
 
-#include "test_macros.h"
-
-int main(int, char**)
-{
-#ifndef TEST_HAS_NO_UNICODE_CHARS
-    static_assert((std::is_same<std::char_traits<char32_t>::char_type, char32_t>::value), "");
-    static_assert((std::is_same<std::char_traits<char32_t>::int_type, std::uint_least32_t>::value), "");
-    static_assert((std::is_same<std::char_traits<char32_t>::off_type, std::streamoff>::value), "");
-    static_assert((std::is_same<std::char_traits<char32_t>::pos_type, std::u32streampos>::value), "");
-    static_assert((std::is_same<std::char_traits<char32_t>::state_type, std::mbstate_t>::value), "");
-#endif // TEST_HAS_NO_UNICODE_CHARS
-
-  return 0;
-}
+static_assert((std::is_same<std::char_traits<char32_t>::char_type, char32_t>::value), "");
+static_assert((std::is_same<std::char_traits<char32_t>::int_type, std::uint_least32_t>::value), "");
+static_assert((std::is_same<std::char_traits<char32_t>::off_type, std::streamoff>::value), "");
+static_assert((std::is_same<std::char_traits<char32_t>::pos_type, std::u32streampos>::value), "");
+static_assert((std::is_same<std::char_traits<char32_t>::state_type, std::mbstate_t>::value), "");

diff  --git a/libcxx/test/std/strings/string.classes/typedefs.pass.cpp b/libcxx/test/std/strings/string.classes/typedefs.compile.pass.cpp
similarity index 60%
rename from libcxx/test/std/strings/string.classes/typedefs.pass.cpp
rename to libcxx/test/std/strings/string.classes/typedefs.compile.pass.cpp
index 4f0ffcfb45d28..6900465fc589f 100644
--- a/libcxx/test/std/strings/string.classes/typedefs.pass.cpp
+++ b/libcxx/test/std/strings/string.classes/typedefs.compile.pass.cpp
@@ -22,19 +22,12 @@
 
 #include "test_macros.h"
 
-int main(int, char**)
-{
-    static_assert((std::is_same<std::string, std::basic_string<char> >::value), "");
+static_assert((std::is_same<std::string, std::basic_string<char> >::value), "");
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
-    static_assert((std::is_same<std::wstring, std::basic_string<wchar_t> >::value), "");
+static_assert((std::is_same<std::wstring, std::basic_string<wchar_t> >::value), "");
 #endif
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
-    static_assert((std::is_same<std::u8string, std::basic_string<char8_t> >::value), "");
+static_assert((std::is_same<std::u8string, std::basic_string<char8_t> >::value), "");
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
-    static_assert((std::is_same<std::u16string, std::basic_string<char16_t> >::value), "");
-    static_assert((std::is_same<std::u32string, std::basic_string<char32_t> >::value), "");
-#endif // TEST_HAS_NO_UNICODE_CHARS
-
-  return 0;
-}
+static_assert((std::is_same<std::u16string, std::basic_string<char16_t> >::value), "");
+static_assert((std::is_same<std::u32string, std::basic_string<char32_t> >::value), "");

diff  --git a/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp
index 7ab7b329d1985..300741264366f 100644
--- a/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp
@@ -37,10 +37,8 @@ int main(int, char**) {
     assert( test<std::u8string_view>  (u8"1234"));
 #endif
 #if TEST_STD_VER >= 11
-#   ifndef TEST_HAS_NO_UNICODE_CHARS
     assert( test<std::u16string_view> ( u"1234"));
     assert( test<std::u32string_view> ( U"1234"));
-#   endif
 #endif
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
     assert( test<std::wstring_view>   ( L"1234"));
@@ -51,10 +49,8 @@ int main(int, char**) {
 #   if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     static_assert( test<std::u8string_view>  ({u8"abc", 3}), "");
 #   endif
-#   ifndef TEST_HAS_NO_UNICODE_CHARS
     static_assert( test<std::u16string_view> ({ u"abc", 3}), "");
     static_assert( test<std::u32string_view> ({ U"abc", 3}), "");
-#   endif
 #   ifndef TEST_HAS_NO_WIDE_CHARACTERS
     static_assert( test<std::wstring_view>   ({ L"abc", 3}), "");
 #   endif

diff  --git a/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp b/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
index 6c72cc5d07eb0..eba68d42eb65e 100644
--- a/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp
@@ -30,10 +30,8 @@ int main(int, char**) {
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test_hash_enabled_for_type<std::u8string_view>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test_hash_enabled_for_type<std::u16string_view>();
     test_hash_enabled_for_type<std::u32string_view>();
-#endif
   }
 
   return 0;

diff  --git a/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
index 1994257808048..56e39a4696702 100644
--- a/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp
@@ -63,10 +63,8 @@ int main(int, char**)
 #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
     test<std::u8string_view>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     test<std::u16string_view>();
     test<std::u32string_view>();
-#endif
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
     test<std::wstring_view>();
 #endif

diff  --git a/libcxx/test/std/utilities/format/format.arguments/format.arg/ctor.pass.cpp b/libcxx/test/std/utilities/format/format.arguments/format.arg/ctor.pass.cpp
index 542467d756323..5591c31a7ada2 100644
--- a/libcxx/test/std/utilities/format/format.arguments/format.arg/ctor.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.arguments/format.arg/ctor.pass.cpp
@@ -36,10 +36,8 @@ void test() {
 #ifndef TEST_HAS_NO_CHAR8_T
   test<char8_t>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test<char16_t>();
   test<char32_t>();
-#endif
 }
 
 int main(int, char**) {

diff  --git a/libcxx/test/std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp
index dbd2cbe6155ba..da6b5d16417ca 100644
--- a/libcxx/test/std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.formatter/format.context/format.context/advance_to.pass.cpp
@@ -56,7 +56,6 @@ void test() {
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<char8_t>>, char8_t>>()));
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test(std::basic_format_args(
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<char16_t>>,
@@ -65,7 +64,6 @@ void test() {
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<char32_t>>,
           char32_t>>()));
-#endif
 }
 
 int main(int, char**) {

diff  --git a/libcxx/test/std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp
index f752a546e6660..928f668c9f649 100644
--- a/libcxx/test/std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.formatter/format.context/format.context/out.pass.cpp
@@ -52,7 +52,6 @@ void test() {
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<char8_t>>, char8_t>>()));
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test(std::basic_format_args(
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<char16_t>>,
@@ -61,7 +60,6 @@ void test() {
       std::make_format_args<std::basic_format_context<
           std::back_insert_iterator<std::basic_string<char32_t>>,
           char32_t>>()));
-#endif
 }
 
 int main(int, char**) {

diff  --git a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/advance_to.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/advance_to.pass.cpp
index 957d37320958d..6b4afcb6561de 100644
--- a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/advance_to.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/advance_to.pass.cpp
@@ -54,10 +54,8 @@ constexpr bool test() {
 #ifndef TEST_HAS_NO_CHAR8_T
   test(u8"abc");
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test(u"abc");
   test(U"abc");
-#endif
 
   return true;
 }

diff  --git a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/begin.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/begin.pass.cpp
index 86a5cc98cad40..63122dc50b76c 100644
--- a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/begin.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/begin.pass.cpp
@@ -40,10 +40,8 @@ constexpr bool test() {
 #ifndef TEST_HAS_NO_CHAR8_T
   test(u8"abc");
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test(u"abc");
   test(U"abc");
-#endif
 
   return true;
 }

diff  --git a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/ctor.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/ctor.pass.cpp
index e7595d8ba0a27..2a06751ec547f 100644
--- a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/ctor.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/ctor.pass.cpp
@@ -63,10 +63,8 @@ constexpr bool test() {
 #ifndef TEST_HAS_NO_CHAR8_T
   test(u8"abc");
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test(u"abc");
   test(U"abc");
-#endif
 
   return true;
 }

diff  --git a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/end.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/end.pass.cpp
index 4924973c67839..e135418dc5b85 100644
--- a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/end.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/end.pass.cpp
@@ -40,10 +40,8 @@ constexpr bool test() {
 #ifndef TEST_HAS_NO_CHAR8_T
   test(u8"abc");
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test(u"abc");
   test(U"abc");
-#endif
 
   return true;
 }

diff  --git a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp
index 64ae6705b1935..eaa18a476aebf 100644
--- a/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/types.compile.pass.cpp
@@ -52,10 +52,8 @@ constexpr void test() {
 #ifndef TEST_HAS_NO_CHAR8_T
   test<char8_t>();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test<char16_t>();
   test<char32_t>();
-#endif
 }
 
 static_assert(std::is_same_v<std::format_parse_context,

diff  --git a/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp b/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp
index 542bb453cdc08..07ea511ae30a7 100644
--- a/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp
+++ b/libcxx/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp
@@ -97,7 +97,6 @@ constexpr void test_char8t() {
 }
 #endif // TEST_HAS_NO_CHAR8_T
 
-#ifndef TEST_HAS_NO_UNICODE_CHARS
 template <class T>
 constexpr void test_uchars() {
   std::cmp_equal(T(), T()); // expected-error 2 {{no matching function for call to 'cmp_equal'}}
@@ -121,7 +120,6 @@ constexpr void test_uchars() {
   std::in_range<T>(int()); // expected-error 2 {{no matching function for call to 'in_range'}}
   std::in_range<int>(T()); // expected-error 2 {{no matching function for call to 'in_range'}}
 }
-#endif // TEST_HAS_NO_UNICODE_CHARS
 
 int main(int, char**) {
   test<bool>();
@@ -142,10 +140,8 @@ int main(int, char**) {
   test_char8t<char8_t>();
 #endif // TEST_HAS_NO_CHAR8_T
 
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   test_uchars<char16_t>();
   test_uchars<char32_t>();
-#endif
 
   return 0;
 }

diff  --git a/libcxx/test/support/atomic_helpers.h b/libcxx/test/support/atomic_helpers.h
index cc5c6e00acaa1..dc38b7ba7768c 100644
--- a/libcxx/test/support/atomic_helpers.h
+++ b/libcxx/test/support/atomic_helpers.h
@@ -81,10 +81,8 @@ struct TestEachIntegralType {
 #if TEST_STD_VER > 17 && defined(__cpp_char8_t)
     TestFunctor<char8_t>()();
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
     TestFunctor<char16_t>()();
     TestFunctor<char32_t>()();
-#endif
     TestFunctor<int8_t>()();
     TestFunctor<uint8_t>()();
     TestFunctor<int16_t>()();

diff  --git a/libcxx/test/support/poisoned_hash_helper.h b/libcxx/test/support/poisoned_hash_helper.h
index a0271e4af1e44..c39be5f0428b3 100644
--- a/libcxx/test/support/poisoned_hash_helper.h
+++ b/libcxx/test/support/poisoned_hash_helper.h
@@ -60,10 +60,8 @@ using LibraryHashTypes = TypeList<
 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
       wchar_t,
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
       char16_t,
       char32_t,
-#endif
       short,
       unsigned short,
       int,

diff  --git a/libcxx/test/support/test.support/make_string_header.pass.cpp b/libcxx/test/support/test.support/make_string_header.pass.cpp
index d087166975071..4cee361552406 100644
--- a/libcxx/test/support/test.support/make_string_header.pass.cpp
+++ b/libcxx/test/support/test.support/make_string_header.pass.cpp
@@ -37,7 +37,6 @@ int main(int, char**) {
     == u8" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN"
              "OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~");
 #endif
-#ifndef TEST_HAS_NO_UNICODE_CHARS
   assert(MAKE_STRING(char16_t,
          " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN"
              "OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~")
@@ -49,7 +48,6 @@ int main(int, char**) {
              "OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~")
     ==  U" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN"
              "OPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~");
-#endif
 
   // clang-format on
   return 0;

diff  --git a/libcxx/test/support/test_macros.h b/libcxx/test/support/test_macros.h
index 4502574922198..89fa90fa8ceee 100644
--- a/libcxx/test/support/test_macros.h
+++ b/libcxx/test/support/test_macros.h
@@ -363,10 +363,6 @@ inline void DoNotOptimize(Tp const& value) {
 #   define TEST_HAS_NO_INT128
 #endif
 
-#if defined(_LIBCPP_HAS_NO_UNICODE_CHARS)
-#   define TEST_HAS_NO_UNICODE_CHARS
-#endif
-
 #if defined(_LIBCPP_HAS_NO_LOCALIZATION)
 #  define TEST_HAS_NO_LOCALIZATION
 #endif


        


More information about the libcxx-commits mailing list