public inbox for libstdc++-cvs@sourceware.org
help / color / mirror / Atom feed
From: Jonathan Wakely <redi@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org
Subject: [gcc r14-2661] libstdc++: Do not define inaccurate from_chars for _Float128 [PR110077]
Date: Wed, 19 Jul 2023 22:43:10 +0000 (GMT)	[thread overview]
Message-ID: <20230719224310.3FCDC3857711@sourceware.org> (raw)

https://gcc.gnu.org/g:0867d30a68de68f4c809757348447bef94ef1491

commit r14-2661-g0867d30a68de68f4c809757348447bef94ef1491
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Jul 19 21:15:17 2023 +0100

    libstdc++: Do not define inaccurate from_chars for _Float128 [PR110077]
    
    I think r14-1431-g7037e7b6e4ac41 was wrong to try to define the
    _Float128 overload unconditionally. Not all targets need it, so defining
    the lossy fallback using long double is not useful (and caused an ABI
    change on Solaris x86).
    
    Making the definition depend on USE_STRTOF128_FOR_FROM_CHARS again
    partially reverts the change for PR 109921, however that should still be
    fixed because the changes to make USE_STRTOF128_FOR_FROM_CHARS depend on
    USE_STRTOD_FOR_FROM_CHARS are not reverted.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/110077
            * src/c++17/floating_from_chars.cc (from_chars): Only define
            _Float128 overload when using __strfromf128.

Diff:
---
 libstdc++-v3/src/c++17/floating_from_chars.cc | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/libstdc++-v3/src/c++17/floating_from_chars.cc b/libstdc++-v3/src/c++17/floating_from_chars.cc
index 3152d64c67c..e421c5adc3e 100644
--- a/libstdc++-v3/src/c++17/floating_from_chars.cc
+++ b/libstdc++-v3/src/c++17/floating_from_chars.cc
@@ -1325,24 +1325,14 @@ _ZSt10from_charsPKcS0_RDF128_St12chars_format(const char* first,
 					      __ieee128& value,
 					      chars_format fmt) noexcept
 __attribute__((alias ("_ZSt10from_charsPKcS0_Ru9__ieee128St12chars_format")));
-#elif __FLT128_MANT_DIG__ == 113 && __LDBL_MANT_DIG__ != 113
+#elif defined(USE_STRTOF128_FOR_FROM_CHARS)
 // Overload for _Float128 is not defined inline in <charconv>, define it here.
 from_chars_result
 from_chars(const char* first, const char* last, _Float128& value,
 	   chars_format fmt) noexcept
 {
-#ifdef USE_STRTOF128_FOR_FROM_CHARS
   // fast_float doesn't support IEEE binary128 format, but we can use strtold.
   return from_chars_strtod(first, last, value, fmt);
-#else
-  // Read a long double. This might give an incorrect result (e.g. values
-  // out of range of long double give an error, even if they fit in _Float128).
-  long double ldbl_val;
-  auto res = std::from_chars(first, last, ldbl_val, fmt);
-  if (res.ec == errc{})
-    value = ldbl_val;
-  return res;
-#endif
 }
 #endif

                 reply	other threads:[~2023-07-19 22:43 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230719224310.3FCDC3857711@sourceware.org \
    --to=redi@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    --cc=libstdc++-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).