https://gcc.gnu.org/g:6a4cfad20b7f7eacb352aed01b6159baa9935f2a

commit r17-647-g6a4cfad20b7f7eacb352aed01b6159baa9935f2a
Author: Jonathan Wakely <[email protected]>
Date:   Tue May 19 17:44:44 2026 +0100

    libstdc++: Deprecate numeric_limits::has_denorm for C++23
    
    The paper P2614R2 was approved in Issaquah, 2023. It deprecates the
    float_denorm_style enumeration type, its enumerators, and the
    numeric_limits::has_denorm and numeric_limits::has_denorm_loss static
    data members.
    
    The std/ranges/iota/max_size_type.cc test doesn't get warnings for using
    numeric_limits::has_denorm{,_loss} because of PR c++/125406. If that
    gets fixed, we'll need two new dg-warning lines in that test.
    
    libstdc++-v3/ChangeLog:
    
            * doc/xml/manual/evolution.xml: Document deprecations.
            * doc/html/manual/api.html: Regenerate.
            * include/bits/max_size_type.h (numeric_limits::has_denorm):
            Mark as deprecated.
            (numeric_limits::has_denorm_loss): Likewise.
            * include/std/limits (float_denorm_style): Mark as deprecated.
            (numeric_limits::has_denorm, numeric_limits::has_denorm_loss):
            Mark as deprecated.
            * testsuite/18_support/numeric_limits/char16_32_t.cc: Add
            dg-warning for expected deprecation warnings.
            * testsuite/18_support/numeric_limits/char8_t.cc: Likewise.
            * testsuite/18_support/numeric_limits/denorm_min.cc: Likewise.
            * testsuite/18_support/numeric_limits/dr559.cc: Likewise.
            * 
testsuite/18_support/numeric_limits/requirements/constexpr_data.cc:
            Likewise.
            * 
testsuite/18_support/numeric_limits/specialization_default_values.cc:
            Likewise.
            * testsuite/std/ranges/iota/max_size_type.cc: Likewise.
    
    Reviewed-by: Tomasz Kamiński <[email protected]>

Diff:
---
 libstdc++-v3/doc/html/manual/api.html              |  5 ++
 libstdc++-v3/doc/xml/manual/evolution.xml          |  8 +++
 libstdc++-v3/include/bits/max_size_type.h          | 10 ++++
 libstdc++-v3/include/std/limits                    | 59 ++++++++++++++++++++--
 .../18_support/numeric_limits/char16_32_t.cc       |  3 ++
 .../testsuite/18_support/numeric_limits/char8_t.cc |  3 ++
 .../18_support/numeric_limits/denorm_min.cc        |  2 +
 .../testsuite/18_support/numeric_limits/dr559.cc   |  2 +
 .../numeric_limits/requirements/constexpr_data.cc  |  3 ++
 .../specialization_default_values.cc               |  2 +
 .../testsuite/std/ranges/iota/max_size_type.cc     |  2 +
 11 files changed, 95 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/doc/html/manual/api.html 
b/libstdc++-v3/doc/html/manual/api.html
index 4fce14127ef8..2398bf495361 100644
--- a/libstdc++-v3/doc/html/manual/api.html
+++ b/libstdc++-v3/doc/html/manual/api.html
@@ -519,4 +519,9 @@ Made <code 
class="code">std::is_integral_v&lt;__int128&gt;</code> true for stric
 Removed allocator-extended constructors and support for uses-allocator
 construction from <code class="classname">std::promise</code> and
 <code class="classname">std::packaged_task</code>.
+</p><p>
+<code class="code">std::numeric_limits::has_denorm</code>,
+<code class="code">std::numeric_limits::has_denorm_loss</code>,
+and <code class="code">enum std::float_denorm_style</code> and its enumerators
+were deprecated for C++23.
 </p></div></div><div class="navfooter"><hr /><table width="100%" 
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" 
href="abi.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" 
href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a 
accesskey="n" href="backwards.html">Next</a></td></tr><tr><td width="40%" 
align="left" valign="top">ABI Policy and Guidelines </td><td width="20%" 
align="center"><a accesskey="h" href="../index.html">Home</a></td><td 
width="40%" align="right" valign="top"> Backwards 
Compatibility</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml 
b/libstdc++-v3/doc/xml/manual/evolution.xml
index 2ebdebc98204..8c471cca5b89 100644
--- a/libstdc++-v3/doc/xml/manual/evolution.xml
+++ b/libstdc++-v3/doc/xml/manual/evolution.xml
@@ -1170,6 +1170,14 @@ Removed allocator-extended constructors and support for 
uses-allocator
 construction from <classname>std::promise</classname> and
 <classname>std::packaged_task</classname>.
 </para>
+
+<para>
+<code>std::numeric_limits::has_denorm</code>,
+<code>std::numeric_limits::has_denorm_loss</code>,
+and <code>enum std::float_denorm_style</code> and its enumerators
+were deprecated for C++23.
+</para>
+
 </section>
 
 </section>
diff --git a/libstdc++-v3/include/bits/max_size_type.h 
b/libstdc++-v3/include/bits/max_size_type.h
index 042aad10a138..28596f0dd51f 100644
--- a/libstdc++-v3/include/bits/max_size_type.h
+++ b/libstdc++-v3/include/bits/max_size_type.h
@@ -791,9 +791,14 @@ namespace ranges
       static constexpr bool has_infinity = false;
       static constexpr bool has_quiet_NaN = false;
       static constexpr bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static constexpr bool has_denorm_loss = false;
       static constexpr bool tinyness_before = false;
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // denorm_absent
+      _GLIBCXX23_DEPRECATED
       static constexpr float_denorm_style has_denorm = denorm_absent;
+#pragma GCC diagnostic pop
       static constexpr float_round_style round_style = round_toward_zero;
 
       static constexpr _Sp
@@ -858,9 +863,14 @@ namespace ranges
       static constexpr bool has_infinity = false;
       static constexpr bool has_quiet_NaN = false;
       static constexpr bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static constexpr bool has_denorm_loss = false;
       static constexpr bool tinyness_before = false;
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+      _GLIBCXX23_DEPRECATED
       static constexpr float_denorm_style has_denorm = denorm_absent;
+#pragma GCC diagnostic pop
       static constexpr float_round_style round_style = round_toward_zero;
 
       static constexpr _Dp
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index cfdbe02c844c..4dc9c643bba6 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -45,6 +45,7 @@
 #pragma GCC diagnostic ignored "-Wpedantic" // Q suffix
 #pragma GCC diagnostic ignored "-Wlong-long"
 #pragma GCC diagnostic ignored "-Wc++23-extensions"
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // denorm enums
 
 #include <bits/c++config.h>
 
@@ -191,14 +192,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  These values represent the presence or absence of a variable number
    *  of exponent bits.  This type is used in the std::numeric_limits class.
   */
-  enum float_denorm_style
+  enum _GLIBCXX23_DEPRECATED float_denorm_style
   {
     /// Indeterminate at compile time whether denormalized values are allowed.
-    denorm_indeterminate = -1,
+    denorm_indeterminate _GLIBCXX23_DEPRECATED = -1,
     /// The type does not allow denormalized values.
-    denorm_absent        = 0,
+    denorm_absent        _GLIBCXX23_DEPRECATED = 0,
     /// The type allows denormalized values.
-    denorm_present       = 1
+    denorm_present       _GLIBCXX23_DEPRECATED = 1
   };
 
   /**
@@ -275,10 +276,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
 
     /** See std::float_denorm_style for more information.  */
+    _GLIBCXX23_DEPRECATED
     static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = 
denorm_absent;
 
     /** True if loss of accuracy is detected as a denormalization loss,
        rather than as an inexact result. */
+    _GLIBCXX23_DEPRECATED
     static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
     /** True if-and-only-if the type adheres to the IEC 559 standard, also
@@ -431,8 +434,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR bool
@@ -498,8 +503,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR
@@ -566,8 +573,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR signed char
@@ -637,8 +646,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned char
@@ -709,8 +720,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR wchar_t
@@ -773,8 +786,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR char8_t
@@ -838,7 +853,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static constexpr bool has_infinity = false;
       static constexpr bool has_quiet_NaN = false;
       static constexpr bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static constexpr float_denorm_style has_denorm = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static constexpr bool has_denorm_loss = false;
 
       static constexpr char16_t
@@ -899,7 +916,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static constexpr bool has_infinity = false;
       static constexpr bool has_quiet_NaN = false;
       static constexpr bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static constexpr float_denorm_style has_denorm = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static constexpr bool has_denorm_loss = false;
 
       static constexpr char32_t
@@ -965,8 +984,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR short
@@ -1034,8 +1055,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned short
@@ -1105,8 +1128,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR int
@@ -1174,8 +1199,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned int
@@ -1244,8 +1271,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR long
@@ -1313,8 +1342,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned long
@@ -1386,8 +1417,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR long long
@@ -1456,8 +1489,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR unsigned long long
@@ -1525,8 +1560,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;         \
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;                
\
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;    \
+      _GLIBCXX23_DEPRECATED                                            \
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm      \
        = denorm_absent;                                                \
+      _GLIBCXX23_DEPRECATED                                            \
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;      \
                                                                        \
       static _GLIBCXX_CONSTEXPR TYPE                                   \
@@ -1594,8 +1631,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;         \
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;                
\
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;    \
+      _GLIBCXX23_DEPRECATED                                            \
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm      \
        = denorm_absent;                                                \
+      _GLIBCXX23_DEPRECATED                                            \
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;      \
                                                                        \
       static _GLIBCXX_CONSTEXPR unsigned TYPE                          \
@@ -1715,8 +1754,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __FLT_HAS_INFINITY__;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __FLT_HAS_QUIET_NAN__;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = bool(__FLT_HAS_DENORM__) ? denorm_present : denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
        = __glibcxx_float_has_denorm_loss;
 
@@ -1790,8 +1831,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __DBL_HAS_INFINITY__;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __DBL_HAS_QUIET_NAN__;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = bool(__DBL_HAS_DENORM__) ? denorm_present : denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
         = __glibcxx_double_has_denorm_loss;
 
@@ -1865,8 +1908,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __LDBL_HAS_INFINITY__;
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = 
__LDBL_HAS_QUIET_NAN__;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = bool(__LDBL_HAS_DENORM__) ? denorm_present : denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
        = __glibcxx_long_double_has_denorm_loss;
 
@@ -1958,9 +2003,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        = __glibcxx_concat3 (__FLT, BITSIZE, _HAS_QUIET_NAN__);         \
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN             \
        = has_quiet_NaN;                                                \
+      _GLIBCXX23_DEPRECATED                                            \
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm      \
        = bool(__glibcxx_concat3 (__FLT, BITSIZE, _HAS_DENORM__))       \
          ? denorm_present : denorm_absent;                             \
+      _GLIBCXX23_DEPRECATED                                            \
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;      \
                                                                        \
       static _GLIBCXX_CONSTEXPR _Float##BITSIZE                                
\
@@ -2057,8 +2104,10 @@ __glibcxx_float_n(128)
       static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN
        = __BFLT16_HAS_QUIET_NAN__;
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = bool(__BFLT16_HAS_DENORM__) ? denorm_present : denorm_absent;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR __gnu_cxx::__bfloat16_t
@@ -2157,8 +2206,10 @@ __glibcxx_float_n(128)
 #else
       static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
 #endif
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
        = denorm_present;
+      _GLIBCXX23_DEPRECATED
       static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
 
       static _GLIBCXX_CONSTEXPR __float128
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc 
b/libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
index 2c8712c861cd..8bedf48ceb4a 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
@@ -66,6 +66,9 @@ template<typename T, typename R>
     VERIFY( char_type::round_style == impl_type::round_style );
   }
 
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 55 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 56 }
+
 int main()
 {
   do_test<char16_t, std::uint_least16_t>();
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc 
b/libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
index e23dbb7adbf6..a114860610e8 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
@@ -63,6 +63,9 @@ template<typename T, typename R>
     VERIFY( char_type::round_style == impl_type::round_style );
   }
 
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 52 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 53 }
+
 int main()
 {
   do_test<char8_t, unsigned char>();
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc 
b/libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
index b508d082b8e7..d4113ebf3d8d 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
@@ -43,6 +43,8 @@ test_denorm_min()
 
   VERIFY (test);
 }
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 36 }
+// { dg-warning "denorm_present' is deprecated" "" { target c++23 } 36 }
 
 int main()
 {
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc 
b/libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
index 88c0ca505f28..a329b80fc8e5 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
@@ -65,6 +65,8 @@ template<typename T>
     VERIFY( cv_limits::tinyness_before == limits::tinyness_before );
     VERIFY( cv_limits::round_style == limits::round_style );
   }
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 52 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 53 }
 
 template<typename T>
   void
diff --git 
a/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
 
b/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
index 43985b5b7348..5cd53b35f5ed 100644
--- 
a/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
+++ 
b/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
@@ -88,6 +88,9 @@ namespace __gnu_test
       }
   };
 }
+// { dg-warning "float_denorm_style' is deprecated" "" { target c++23 } 67 }
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 68 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 70 }
 
 int main()
 {
diff --git 
a/libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
 
b/libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
index 1bff0ad7f4d6..63a42bee0e15 100644
--- 
a/libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
+++ 
b/libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
@@ -78,6 +78,8 @@ void test01()
   VERIFY( !obj.tinyness_before );
   VERIFY( obj.round_style == std::round_toward_zero );
 }
+// { dg-warning "has_denorm' is deprecated" "" { target c++23 } 68 }
+// { dg-warning "has_denorm_loss' is deprecated" "" { target c++23 } 69 }
 
 // test linkage of the generic bits
 template struct std::numeric_limits<B>;
diff --git a/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc 
b/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
index af53718a95b3..d200554cbd16 100644
--- a/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
+++ b/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
@@ -428,6 +428,8 @@ constexpr bool 
verify_numeric_limits_values_not_meaningful_for = true
        && (numeric_limits<integer_class>::quiet_NaN() == 0)
        && (numeric_limits<integer_class>::signaling_NaN() == 0);
 
+// { dg-warning "denorm_absent' is deprecated" "" { target c++23 } 422 }
+
 static_assert(verify_numeric_limits_values_not_meaningful_for<max_size_t>);
 static_assert(verify_numeric_limits_values_not_meaningful_for<max_diff_t>);

Reply via email to