public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-1651] libstdc++: Remove duplicate definition of _Float128 std::from_chars [PR110077]
@ 2023-06-09 12:25 Jonathan Wakely
  0 siblings, 0 replies; only message in thread
From: Jonathan Wakely @ 2023-06-09 12:25 UTC (permalink / raw)
  To: gcc-cvs, libstdc++-cvs

https://gcc.gnu.org/g:00da6bcfccbc5ab13821d8dd7334dd48c22d5702

commit r14-1651-g00da6bcfccbc5ab13821d8dd7334dd48c22d5702
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jun 9 11:08:03 2023 +0100

    libstdc++: Remove duplicate definition of _Float128 std::from_chars [PR110077]
    
    When long double uses IEEE binary128 representation we define the
    _Float128 overload of std::from_chars inline in <charconv>. My changes
    in r14-1431-g7037e7b6e4ac41 cause it to also be defined non-inline in
    the library, leading to an abi-check failure for (at least) sparc and
    aarch64.
    
    Suppress the definition in the library if long double and _Float128 have
    are both IEEE binary128.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/110077
            * src/c++17/floating_from_chars.cc (from_chars) <_Float128>:
            Only define if _Float128 and long double have different
            representations.

Diff:
---
 libstdc++-v3/src/c++17/floating_from_chars.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/src/c++17/floating_from_chars.cc b/libstdc++-v3/src/c++17/floating_from_chars.cc
index f1dd1037bf3..3152d64c67c 100644
--- a/libstdc++-v3/src/c++17/floating_from_chars.cc
+++ b/libstdc++-v3/src/c++17/floating_from_chars.cc
@@ -1325,7 +1325,8 @@ _ZSt10from_charsPKcS0_RDF128_St12chars_format(const char* first,
 					      __ieee128& value,
 					      chars_format fmt) noexcept
 __attribute__((alias ("_ZSt10from_charsPKcS0_Ru9__ieee128St12chars_format")));
-#elif defined(__FLT128_MANT_DIG__)
+#elif __FLT128_MANT_DIG__ == 113 && __LDBL_MANT_DIG__ != 113
+// 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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-06-09 12:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-09 12:25 [gcc r14-1651] libstdc++: Remove duplicate definition of _Float128 std::from_chars [PR110077] Jonathan Wakely

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).