aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-04-08 17:37:32 +0100
committerJonathan Wakely <jwakely@redhat.com>2024-04-10 00:21:41 +0100
commit92b38ec84f2990d217f036dc6c5a32cde5ecfb93 (patch)
tree55b9031932aecd9623a1d03c1d436752c39b9f53
parent639215c5eb6c56ba3830cd868d1d3ddd700b4c90 (diff)
downloadgcc-92b38ec84f2990d217f036dc6c5a32cde5ecfb93.zip
gcc-92b38ec84f2990d217f036dc6c5a32cde5ecfb93.tar.gz
gcc-92b38ec84f2990d217f036dc6c5a32cde5ecfb93.tar.bz2
libstdc++: Fix build for targets without FP std::from_chars [PR114633]
If the faster std::from_chars is not supported for floating-point types then just extract the value from the stream using operator>>. This fixes a build error for targets where __cpp_lib_to_chars is not defined. libstdc++-v3/ChangeLog: PR libstdc++/114633 * include/bits/chrono_io.h (_Parser::operator()) <'S'>: Use stream extraction if std::from_chars is not available.
-rw-r--r--libstdc++-v3/include/bits/chrono_io.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index b9eb3d2..3b34992 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -3685,6 +3685,7 @@ namespace __detail
if (!__is_failed(__err)) [[likely]]
{
long double __val{};
+#if __cpp_lib_to_chars
string __str = std::move(__buf).str();
auto __first = __str.data();
auto __last = __first + __str.size();
@@ -3694,6 +3695,9 @@ namespace __detail
if ((bool)ec || ptr != __last) [[unlikely]]
__err |= ios_base::failbit;
else
+#else
+ if (__buf >> __val)
+#endif
{
duration<long double> __fs(__val);
if constexpr (__is_floating)