The testcase in the GCC testsuite assumes that wchar_t is 32 bits, which is not correct on AIX. 32 bit AIX maintains 16 bit wchar_t for backward compatibility (64 bit AIX uses 32 bit wchar_t).
What is the preferred method to make the testcase safe for smaller wchar_t? The following patch works for me. I wasn't sure what header file and what macro test would be considered portable. I could include stdint.h and compare WCHAR_MAX == UINT16_MAX or WCHAR_MAX < UINT32_MAX Thanks, David Index: pr58708.C =================================================================== --- pr58708.C (revision 230463) +++ pr58708.C (working copy) @@ -1,5 +1,7 @@ // { dg-do run { target c++14 } } +#include <wchar.h> + template<typename, typename> struct is_same { @@ -43,7 +45,11 @@ if (foo.chars[1] != 98) __builtin_abort(); if (foo.chars[2] != 99) __builtin_abort(); - auto wfoo = L"\x01020304\x05060708"_foo; +#if WCHAR_MAX == 65535 + auto wfoo = L"\x0102\x0304"_foo; +#else + auto wfoo = L"\x01020304\x05060708"_foo; +#endif if (is_same<decltype(wfoo)::char_type, wchar_t>::value != true) __builtin_abort(); if (sizeof(wfoo.chars)/sizeof(wchar_t) != 2) __builtin_abort(); if (wfoo.chars[0] != 16909060) __builtin_abort();