https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51772
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- In config/locale/newlib/ctype_members.cc: default: // Different from the generic version, xdigit and print in // newlib are defined as bitwise-OR result of bitmasks: // xdigit = _X | _N; // print = _P | _U | _L | _N | _B; // in which _X and _B don't correspond to any ctype mask. // In order to get the wmask correctly converted when __m is // equal to _X or _B, the two cases are specifically handled // here. if (__m & xdigit) __ret = wctype("xdigit"); else if (__m & print) __ret = wctype("print"); else __ret = __wmask_type(); } This doesn't only apply to the masks defined in config/os/newlib/ctype_base.h, but also netbsd and openbsd and bionic. Something similar is also needed for qnx, as config/os/qnx/qnx6.1/ctype_base.h uses several bitmasks that do not correspond to any ctype, e.g. _XA, _SP, _XS, _XB