diff --git a/libstdc++-v3/config/locale/generic/ctype_members.cc b/libstdc++-v3/config/locale/generic/ctype_members.cc index 607c8bb1b..b197acb1f 100644 --- a/libstdc++-v3/config/locale/generic/ctype_members.cc +++ b/libstdc++-v3/config/locale/generic/ctype_members.cc @@ -133,6 +133,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __hi; } +#ifndef _GLIBCXX_CTYPE_WCHAR_T_DO_IS_DEFINED bool ctype:: do_is(mask __m, char_type __c) const @@ -186,6 +187,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ++__lo; return __lo; } +#endif // _GLIBCXX_CTYPE_WCHAR_T_DO_IS_DEFINED wchar_t ctype:: @@ -205,6 +207,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __hi; } +#if defined(__WCHAR_MIN__) && __WCHAR_MIN__ == 0 +// Disable wc >= 0 warnings for unsigned wchar_t. +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wtype-limits" +#endif + char ctype:: do_narrow(wchar_t __wc, char __dfault) const @@ -244,6 +252,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __hi; } +#if defined(__WCHAR_MIN__) && __WCHAR_MIN__ == 0 +#pragma GCC diagnostic pop +#endif + void ctype::_M_initialize_ctype() throw() { diff --git a/libstdc++-v3/config/os/os2/os_defines.h b/libstdc++-v3/config/os/os2/os_defines.h index 50ea32251..8da850234 100644 --- a/libstdc++-v3/config/os/os2/os_defines.h +++ b/libstdc++-v3/config/os/os2/os_defines.h @@ -33,4 +33,7 @@ // System-specific #define, typedefs, corrections, etc, go here. This // file will come before all others. +// We have ctype::do_is and do_scan* specialised in ctype_inline.h. +#define _GLIBCXX_CTYPE_WCHAR_T_DO_IS_DEFINED 1 + #endif