[newlib-cygwin/main] Cygwin: winsup/cygwin/include/limits.h: Add C23 ..._WIDTH definitions

Corinna Vinschen via Cygwin-cvs <[email protected]> Thu, 9 Apr 2026 17:35:26 +0000 (GMT)
Newsgroups gmane.os.cygwin.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D41ac0e8c777=
5fc437ab44d03125c3d4b5f7772c3

commit 41ac0e8c7775fc437ab44d03125c3d4b5f7772c3
Author:     Joel Sherrill <[email protected]>
AuthorDate: Wed Apr 8 10:19:02 2026 -0500
Commit:     Corinna Vinschen <[email protected]>
CommitDate: Thu Apr 9 12:37:51 2026 +0200

    Cygwin: winsup/cygwin/include/limits.h: Add C23 ..._WIDTH definitions
   =20
    C23 adds the following constants to reflect the bit width of various
    types: CHAR_WIDTH, SCHAR_WIDTH, UCHAR_WIDTH, SHRT_WIDTH, USHRT_WIDTH,
    INT_WIDTH, UINT_WIDTH, LONG_WIDTH, ULONG_WIDTH, LLONG_WIDTH, and
    ULLONG_WIDTH.

Diff:
---
 winsup/cygwin/include/limits.h | 56 ++++++++++++++++++++++++++++++++++++++=
++++
 1 file changed, 56 insertions(+)

diff --git a/winsup/cygwin/include/limits.h b/winsup/cygwin/include/limits.h
index 28b7527f5180..8cb02c84d6ce 100644
--- a/winsup/cygwin/include/limits.h
+++ b/winsup/cygwin/include/limits.h
@@ -47,10 +47,20 @@ details. */
 #undef SCHAR_MAX
 #define SCHAR_MAX 127
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef SCHAR_WIDTH
+#define SCHAR_WIDTH __SCHAR_WIDTH__
+#endif
+
 /* Maximum value an `unsigned char' can hold.  (Minimum is 0).  */
 #undef UCHAR_MAX
 #define UCHAR_MAX 255
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef UCHAR_WIDTH
+#define UCHAR_WIDTH __SCHAR_WIDTH__
+#endif
+
 /* Minimum and maximum values a `char' can hold.  */
 #ifdef __CHAR_UNSIGNED__
 #undef CHAR_MIN
@@ -64,16 +74,31 @@ details. */
 #define CHAR_MAX 127
 #endif
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef CHAR_WIDTH
+#define CHAR_WIDTH __SCHAR_WIDTH__
+#endif
+
 /* Minimum and maximum values a `signed short int' can hold.  */
 #undef SHRT_MIN
 #define SHRT_MIN (-32768)
 #undef SHRT_MAX
 #define SHRT_MAX 32767
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef SHRT_WIDTH
+#define SHRT_WIDTH __SHRT_WIDTH__
+#endif
+
 /* Maximum value an `unsigned short int' can hold.  (Minimum is 0).  */
 #undef USHRT_MAX
 #define USHRT_MAX 65535
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef USHRT_WIDTH
+#define USHRT_WIDTH __SHRT_WIDTH__
+#endif
+
 /* Minimum and maximum values a `signed int' can hold.  */
 #ifndef __INT_MAX__
 #define __INT_MAX__ 2147483647
@@ -83,10 +108,20 @@ details. */
 #undef INT_MAX
 #define INT_MAX __INT_MAX__
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef INT_WIDTH
+#define INT_WIDTH __INT_WIDTH__
+#endif
+
 /* Maximum value an `unsigned int' can hold.  (Minimum is 0).  */
 #undef UINT_MAX
 #define UINT_MAX (INT_MAX * 2U + 1)
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef UINT_WIDTH
+#define UINT_WIDTH __INT_WIDTH__
+#endif
+
 /* Minimum and maximum values a `signed long int' can hold.
    (Same as `int').  */
 #ifndef __LONG_MAX__
@@ -97,10 +132,21 @@ details. */
 #undef LONG_MAX
 #define LONG_MAX __LONG_MAX__
=20
+
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef LONG_WIDTH
+#define LONG_WIDTH __LONG_WIDTH__
+#endif
+
 /* Maximum value an `unsigned long int' can hold.  (Minimum is 0).  */
 #undef ULONG_MAX
 #define ULONG_MAX (LONG_MAX * 2UL + 1)
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef ULONG_WIDTH
+#define ULONG_WIDTH __LONG_WIDTH__
+#endif
+
 /* Minimum and maximum values a `signed long long int' can hold.  */
 #ifndef __LONG_LONG_MAX__
 #define __LONG_LONG_MAX__ 9223372036854775807LL
@@ -124,11 +170,21 @@ details. */
 #undef LLONG_MAX
 #define LLONG_MAX __LONG_LONG_MAX__
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef LLONG_WIDTH
+#define LLONG_WIDTH __LONG_LONG_WIDTH__
+#endif
+
 /* Maximum value an `unsigned long long int' can hold.  (Minimum is 0).  */
 #undef ULLONG_MAX
 #define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
 #endif /* __ISO_C_VISIBLE >=3D 1999 */
=20
+#if defined(__STDC_WANT_IEC_60559_BFP_EXT__) || __ISO_C_VISIBLE >=3D 2023
+#undef ULLONG_WIDTH
+#define ULLONG_WIDTH __LONG_LONG_WIDTH__
+#endif
+
 /* Maximum size of ssize_t. Sadly, gcc doesn't give us __SSIZE_MAX__
    the way it does for __SIZE_MAX__.  On the other hand, we happen to
    know that for Cygwin, ssize_t is 'long' and this particular header