]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Deprecate numeric_limits::has_denorm for C++23
authorJonathan Wakely <jwakely@redhat.com>
Tue, 19 May 2026 16:44:44 +0000 (17:44 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Thu, 21 May 2026 12:27:40 +0000 (13:27 +0100)
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 <tkaminsk@redhat.com>
libstdc++-v3/doc/html/manual/api.html
libstdc++-v3/doc/xml/manual/evolution.xml
libstdc++-v3/include/bits/max_size_type.h
libstdc++-v3/include/std/limits
libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc

index 4fce14127ef88ccf0257b030f9171253c54c9136..2398bf4953614ccd999a8703512b11969ea5d4ec 100644 (file)
@@ -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
index 2ebdebc98204a8a6e079484f5577a17acdb33721..8c471cca5b89c98bd417e50a5b406a222a7be5d7 100644 (file)
@@ -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>
index 042aad10a138c08e8ce6dce2f3464d6cf1672575..28596f0dd51f917ff4dfc94328efb69855679c47 100644 (file)
@@ -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
index cfdbe02c844c2f1f5ea9575ae1e112352f5b0c3f..4dc9c643bba6411144c9273f2461e364e6c50005 100644 (file)
@@ -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
index 2c8712c861cdd4f1f1f6462fdb192e1d5a0f2817..8bedf48ceb4afafccf3a473467730f05b4f4de76 100644 (file)
@@ -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>();
index e23dbb7adbf620db6ddc7c9fb34e5d3f042b624c..a114860610e8313f12375deacd1d3e78d54b844f 100644 (file)
@@ -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>();
index b508d082b8e7f7596a947a330fd4fb8c33850be2..d4113ebf3d8d0a1d231a6d04d2518dafd2e9c4af 100644 (file)
@@ -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()
 {
index 88c0ca505f28914cd8cb57464c531c9ddf07181b..a329b80fc8e5fba322ce2025be7902143fb7e85c 100644 (file)
@@ -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
index 43985b5b7348ef25b5ab6419ca397e92e72208b8..5cd53b35f5ed285e50565f8160b85d1a50d5029d 100644 (file)
@@ -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()
 {
index 1bff0ad7f4d6c5c7c7bdc6a66c1e2246ddee9b59..63a42bee0e157af43327e74565bbcf668e26ab7f 100644 (file)
@@ -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>;
index af53718a95b3fe26c94a017ab9956955c7461600..d200554cbd16f370d0a97afeda8688021f82cb22 100644 (file)
@@ -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>);