https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109921
--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-13 branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>: https://gcc.gnu.org/g:cd2f934bb09c04e62beb8eb5421467184598983b commit r13-7593-gcd2f934bb09c04e62beb8eb5421467184598983b Author: Jonathan Wakely <jwak...@redhat.com> Date: Thu May 25 10:32:33 2023 +0100 libstdc++: Fix preprocessor conditions for std::from_chars [PR109921] We use the from_chars_strtod function with __strtof128 to read a _Float128 value, but from_chars_strtod is not defined unless uselocale is available. This can lead to compilation failures for some targets, because we try to define the _Float128 overload in terms of a non-existing from_chars_strtod function. Only try to use __strtof128 if uselocale is available and therefore we can use the from_chars_strtod function template. This is a simpler change than r14-1431-g7037e7b6e4ac41 on trunk, because that caused unwanted ABI regressions (PR libstdc++/110077). libstdc++-v3/ChangeLog: PR libstdc++/109921 * src/c++17/floating_from_chars.cc (USE_STRTOF128_FOR_FROM_CHARS): Only define when USE_STRTOD_FOR_FROM_CHARS is also defined. (USE_STRTOD_FOR_FROM_CHARS): Do not undefine when long double is binary64. (from_chars(const char*, const char*, double&, chars_format)): Check __LDBL_MANT_DIG__ == __DBL_MANT_DIG__ here.