public inbox for libstdc++@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jonathan Wakely <jwakely@redhat.com>
To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org
Cc: Jakub Jelinek <jakub@redhat.com>
Subject: [committed] libstdc++: Define __cpp_lib_to_chars for C++20 [PR 100146]
Date: Tue, 20 Apr 2021 12:51:58 +0100	[thread overview]
Message-ID: <YH7AXsMzcIhSK5X+@redhat.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 690 bytes --]

This defines the feature test macro when uselocale is available, because
the floating-point std::from_chars support currently depends on that.

Co-authored-by: Jakub Jelinek <jakub@redhat.com>

libstdc++-v3/ChangeLog:

	PR libstdc++/100146
	* include/std/charconv (__cpp_lib_to_chars): Define
	conditionally.
	* include/std/version (__cpp_lib_to_chars): Likewise..
	* testsuite/20_util/from_chars/4.cc: Only check feature test
	macro, not _GLIBCXX_HAVE_USELOCALE.
	* testsuite/20_util/from_chars/5.cc: Likewise.
	* testsuite/20_util/from_chars/6.cc: Likewise.
	* testsuite/20_util/to_chars/long_double.cc: Likewise.

Tested x86_64-linux. Committed to trunk. I'll also backport to gcc-11.



[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 4744 bytes --]

commit f1a68574b1f8d2961d3a676dbcf0cc24b6368578
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Apr 20 12:46:11 2021

    libstdc++: Define __cpp_lib_to_chars for C++20 [PR 100146]
    
    This defines the feature test macro when uselocale is available, because
    the floating-point std::from_chars support currently depends on that.
    
    Co-authored-by: Jakub Jelinek <jakub@redhat.com>
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/100146
            * include/std/charconv (__cpp_lib_to_chars): Define
            conditionally.
            * include/std/version (__cpp_lib_to_chars): Likewise..
            * testsuite/20_util/from_chars/4.cc: Only check feature test
            macro, not _GLIBCXX_HAVE_USELOCALE.
            * testsuite/20_util/from_chars/5.cc: Likewise.
            * testsuite/20_util/from_chars/6.cc: Likewise.
            * testsuite/20_util/to_chars/long_double.cc: Likewise.

diff --git a/libstdc++-v3/include/std/charconv b/libstdc++-v3/include/std/charconv
index 851b1e5cac2..6e407f31e30 100644
--- a/libstdc++-v3/include/std/charconv
+++ b/libstdc++-v3/include/std/charconv
@@ -44,8 +44,9 @@
 #include <bits/error_constants.h> // for std::errc
 #include <ext/numeric_traits.h>
 
-// FIXME: Define when floating point is supported:
-// #define __cpp_lib_to_chars 201611L
+#if _GLIBCXX_HAVE_USELOCALE
+# define __cpp_lib_to_chars 201611L
+#endif
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version
index cb25148fca5..d9f6a3c3dfd 100644
--- a/libstdc++-v3/include/std/version
+++ b/libstdc++-v3/include/std/version
@@ -161,7 +161,9 @@
 #endif
 #define __cpp_lib_shared_ptr_weak_type 201606
 #define __cpp_lib_string_view 201803L
-// #define __cpp_lib_to_chars 201611L
+#if _GLIBCXX_HAVE_USELOCALE
+# define __cpp_lib_to_chars 201611L
+#endif
 #define __cpp_lib_unordered_map_try_emplace 201411
 #define __cpp_lib_variant 201606L
 #endif
diff --git a/libstdc++-v3/testsuite/20_util/from_chars/4.cc b/libstdc++-v3/testsuite/20_util/from_chars/4.cc
index 1482b5dfb6e..7cee4dcbc23 100644
--- a/libstdc++-v3/testsuite/20_util/from_chars/4.cc
+++ b/libstdc++-v3/testsuite/20_util/from_chars/4.cc
@@ -28,9 +28,7 @@
 
 // Test std::from_chars floating-point conversions.
 
-// As of July 2020 __cpp_lib_to_chars is not defined, but std::from_chars
-// works for floating-point types when _GLIBCXX_HAVE_USELOCALE is defined.
-#if __cpp_lib_to_chars >= 201611L || _GLIBCXX_HAVE_USELOCALE
+#if __cpp_lib_to_chars >= 201611L
 void
 test01()
 {
@@ -363,7 +361,7 @@ test06()
 int
 main()
 {
-#if __cpp_lib_to_chars >= 201611L || _GLIBCXX_HAVE_USELOCALE
+#if __cpp_lib_to_chars >= 201611L
   test01();
   test02();
   test03();
diff --git a/libstdc++-v3/testsuite/20_util/from_chars/5.cc b/libstdc++-v3/testsuite/20_util/from_chars/5.cc
index dd5f9229f68..fa86ab7383c 100644
--- a/libstdc++-v3/testsuite/20_util/from_chars/5.cc
+++ b/libstdc++-v3/testsuite/20_util/from_chars/5.cc
@@ -25,9 +25,7 @@
 
 // Test std::from_chars error handling.
 
-// As of July 2020 __cpp_lib_to_chars is not defined, but std::from_chars
-// works for floating-point types when _GLIBCXX_HAVE_USELOCALE is defined.
-#if __cpp_lib_to_chars >= 201611L || _GLIBCXX_HAVE_USELOCALE
+#if __cpp_lib_to_chars >= 201611L
 void
 test01()
 {
@@ -160,7 +158,7 @@ test04()
 int
 main()
 {
-#if __cpp_lib_to_chars >= 201611L || _GLIBCXX_HAVE_USELOCALE
+#if __cpp_lib_to_chars >= 201611L
   test01();
   test02();
   test03();
diff --git a/libstdc++-v3/testsuite/20_util/from_chars/6.cc b/libstdc++-v3/testsuite/20_util/from_chars/6.cc
index 58e0f1fc932..139a1811db0 100644
--- a/libstdc++-v3/testsuite/20_util/from_chars/6.cc
+++ b/libstdc++-v3/testsuite/20_util/from_chars/6.cc
@@ -27,7 +27,7 @@
 void
 test01()
 {
-#if __cpp_lib_to_chars >= 201611L || _GLIBCXX_HAVE_USELOCALE
+#if __cpp_lib_to_chars >= 201611L
 #if _GLIBCXX_USE_C99_FENV_TR1
   double d;
   std::fesetround(FE_DOWNWARD);
diff --git a/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc b/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc
index 22d42067d65..8cf45ad5e94 100644
--- a/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc
+++ b/libstdc++-v3/testsuite/20_util/to_chars/long_double.cc
@@ -69,7 +69,7 @@ test01()
   // Verifies correctness of the hexadecimal form [BEGIN,END) for VALUE by
   // round-tripping it through from_chars (if available).
   auto verify_via_from_chars = [] (char *begin, char *end, long double value) {
-#if __cpp_lib_to_chars >= 201611L || _GLIBCXX_HAVE_USELOCALE
+#if __cpp_lib_to_chars >= 201611L
     long double roundtrip;
     auto result = from_chars(begin, end, roundtrip, chars_format::hex);
     VERIFY( result.ec == errc{} );

                 reply	other threads:[~2021-04-20 11:52 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=YH7AXsMzcIhSK5X+@redhat.com \
    --to=jwakely@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    --cc=libstdc++@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).