From 44e24d8f998cf6e5bd5ca9c166562a841161a15a Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Wed, 14 Apr 2021 09:31:52 -0400 Subject: [PATCH] [libc++] Remove test suite workarounds on Apple with old Clangs In 5fd17ab, we worked around the Apple system headers not providing const-correct overloads for some functions. However, that required an attribute that was only present in recent Clangs at the time. We can now assume that all supported Clang versions on Apple platforms do support that attribute. Differential Revision: https://reviews.llvm.org/D100477 --- libcxx/test/std/depr/depr.c.headers/string_h.pass.cpp | 18 ++++++------------ libcxx/test/std/depr/depr.c.headers/wchar_h.pass.cpp | 18 ++++++------------ libcxx/test/std/strings/c.strings/cstring.pass.cpp | 18 ++++++------------ libcxx/test/std/strings/c.strings/cwchar.pass.cpp | 18 ++++++------------ 4 files changed, 24 insertions(+), 48 deletions(-) diff --git a/libcxx/test/std/depr/depr.c.headers/string_h.pass.cpp b/libcxx/test/std/depr/depr.c.headers/string_h.pass.cpp index c5eac1a..4e18107 100644 --- a/libcxx/test/std/depr/depr.c.headers/string_h.pass.cpp +++ b/libcxx/test/std/depr/depr.c.headers/string_h.pass.cpp @@ -36,12 +36,17 @@ int main(int, char**) static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); #ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS static_assert((std::is_same::value), ""); #endif @@ -49,16 +54,5 @@ int main(int, char**) static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); - // These tests fail on systems whose C library doesn't provide a correct overload - // set for strchr, strpbrk, strrchr, strstr, and memchr, unless the compiler is - // a suitably recent version of Clang. -#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD) - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); -#endif - - return 0; + return 0; } diff --git a/libcxx/test/std/depr/depr.c.headers/wchar_h.pass.cpp b/libcxx/test/std/depr/depr.c.headers/wchar_h.pass.cpp index eb212ff..b297ab0 100644 --- a/libcxx/test/std/depr/depr.c.headers/wchar_h.pass.cpp +++ b/libcxx/test/std/depr/depr.c.headers/wchar_h.pass.cpp @@ -85,14 +85,19 @@ int main(int, char**) static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); @@ -107,17 +112,6 @@ int main(int, char**) static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); - // These tests fail on systems whose C library doesn't provide a correct overload - // set for wcschr, wcspbrk, wcsrchr, wcsstr, and wmemchr, unless the compiler is - // a suitably recent version of Clang. -#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD) - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); -#endif - #ifndef _LIBCPP_HAS_NO_STDIN static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); @@ -130,5 +124,5 @@ int main(int, char**) static_assert((std::is_same::value), ""); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/c.strings/cstring.pass.cpp b/libcxx/test/std/strings/c.strings/cstring.pass.cpp index c8ee278..3d667ed 100644 --- a/libcxx/test/std/strings/c.strings/cstring.pass.cpp +++ b/libcxx/test/std/strings/c.strings/cstring.pass.cpp @@ -37,12 +37,17 @@ int main(int, char**) ASSERT_SAME_TYPE(int, decltype(std::strcoll(cpc, cpc))); ASSERT_SAME_TYPE(std::size_t, decltype(std::strxfrm(cp, cpc, s))); ASSERT_SAME_TYPE(void*, decltype(std::memchr(vp, 0, s))); + ASSERT_SAME_TYPE(const void*, decltype(std::memchr(vpc, 0, s))); ASSERT_SAME_TYPE(char*, decltype(std::strchr(cp, 0))); + ASSERT_SAME_TYPE(const char*, decltype(std::strchr(cpc, 0))); ASSERT_SAME_TYPE(std::size_t, decltype(std::strcspn(cpc, cpc))); ASSERT_SAME_TYPE(char*, decltype(std::strpbrk(cp, cpc))); + ASSERT_SAME_TYPE(const char*, decltype(std::strpbrk(cpc, cpc))); ASSERT_SAME_TYPE(char*, decltype(std::strrchr(cp, 0))); + ASSERT_SAME_TYPE(const char*, decltype(std::strrchr(cpc, 0))); ASSERT_SAME_TYPE(std::size_t, decltype(std::strspn(cpc, cpc))); ASSERT_SAME_TYPE(char*, decltype(std::strstr(cp, cpc))); + ASSERT_SAME_TYPE(const char*, decltype(std::strstr(cpc, cpc))); #ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS ASSERT_SAME_TYPE(char*, decltype(std::strtok(cp, cpc))); #endif @@ -50,16 +55,5 @@ int main(int, char**) ASSERT_SAME_TYPE(char*, decltype(std::strerror(0))); ASSERT_SAME_TYPE(std::size_t, decltype(std::strlen(cpc))); - // These tests fail on systems whose C library doesn't provide a correct overload - // set for strchr, strpbrk, strrchr, strstr, and memchr, unless the compiler is - // a suitably recent version of Clang. -#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD) - ASSERT_SAME_TYPE(const void*, decltype(std::memchr(vpc, 0, s))); - ASSERT_SAME_TYPE(const char*, decltype(std::strchr(cpc, 0))); - ASSERT_SAME_TYPE(const char*, decltype(std::strpbrk(cpc, cpc))); - ASSERT_SAME_TYPE(const char*, decltype(std::strrchr(cpc, 0))); - ASSERT_SAME_TYPE(const char*, decltype(std::strstr(cpc, cpc))); -#endif - - return 0; + return 0; } diff --git a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp index 44ccf3f..7d670d0 100644 --- a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp +++ b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp @@ -85,14 +85,19 @@ int main(int, char**) ASSERT_SAME_TYPE(int, decltype(std::wcsncmp(L"", L"", s))); ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsxfrm(ws, L"", s))); ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcschr((wchar_t*)0, L' '))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcschr((const wchar_t*)0, L' '))); ASSERT_SAME_TYPE(std::size_t, decltype(std::wcscspn(L"", L""))); ASSERT_SAME_TYPE(std::size_t, decltype(std::wcslen(L""))); ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcspbrk((wchar_t*)0, L""))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcspbrk((const wchar_t*)0, L""))); ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsrchr((wchar_t*)0, L' '))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsrchr((const wchar_t*)0, L' '))); ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsspn(L"", L""))); ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsstr((wchar_t*)0, L""))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsstr((const wchar_t*)0, L""))); ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcstok(ws, L"", (wchar_t**)0))); ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemchr((wchar_t*)0, L' ', s))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wmemchr((const wchar_t*)0, L' ', s))); ASSERT_SAME_TYPE(int, decltype(std::wmemcmp(L"", L"", s))); ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemcpy(ws, L"", s))); ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemmove(ws, L"", s))); @@ -107,17 +112,6 @@ int main(int, char**) ASSERT_SAME_TYPE(std::size_t, decltype(std::mbsrtowcs(ws, (const char**)0, s, &mb))); ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsrtombs(ns, (const wchar_t**)0, s, &mb))); - // These tests fail on systems whose C library doesn't provide a correct overload - // set for wcschr, wcspbrk, wcsrchr, wcsstr, and wmemchr, unless the compiler is - // a suitably recent version of Clang. -#if !defined(__APPLE__) || defined(_LIBCPP_PREFERRED_OVERLOAD) - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcschr((const wchar_t*)0, L' '))); - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcspbrk((const wchar_t*)0, L""))); - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsrchr((const wchar_t*)0, L' '))); - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsstr((const wchar_t*)0, L""))); - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wmemchr((const wchar_t*)0, L' ', s))); -#endif - #ifndef _LIBCPP_HAS_NO_STDIN ASSERT_SAME_TYPE(std::wint_t, decltype(std::getwchar())); ASSERT_SAME_TYPE(int, decltype(std::vwscanf(L"", va))); @@ -130,5 +124,5 @@ int main(int, char**) ASSERT_SAME_TYPE(int, decltype(std::wprintf(L""))); #endif - return 0; + return 0; } -- 2.7.4