aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Dos Reis <gdr@integrable-solutions.net>2002-08-28 21:41:55 +0000
committerGabriel Dos Reis <gdr@gcc.gnu.org>2002-08-28 21:41:55 +0000
commit585e661a790755c89b9c8563a4bdac785dd89ef3 (patch)
tree2b17511bd36a86a0261dcb0450d11f2c2c443f3a
parent07ec1151808767a9b8c4bd3dcff336dd68bad454 (diff)
downloadgcc-585e661a790755c89b9c8563a4bdac785dd89ef3.zip
gcc-585e661a790755c89b9c8563a4bdac785dd89ef3.tar.gz
gcc-585e661a790755c89b9c8563a4bdac785dd89ef3.tar.bz2
c-common.c (builtin_define_type_precision): New function.
gcc/ 2002-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net> * c-common.c (builtin_define_type_precision): New function. (cb_register_builtins): Use it. Define __WCHAR_UNSIGNED__ is wchar_t is unsigned in C++. * doc/cpp.texi (Common Predefined Macros): Document __WCHAR_UNSIGNED__, __CHAR_BIT__, __WCHAR_BIT__, __SHRT_BIT__, __INT_BIT__, __LONG_BIT__, __LONG_LONG_BIT__, __FLOAT_BIT__, __DOUBLE_BIT__, __LONG_DOUBLE_BIT__. libstdc++-v3/ 2002-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net> * include/std/std_limits.h (__glibcpp_char_bits, __glibcpp_short_bits, __glibcpp_int_bits, __glibcpp_long_bits, __glibcpp_long_long_bits, __glibcpp_float_bits, __glibcpp_double_bits, __glibcpp_long_double_bits): Remove. Use compiler predifined macros. (__glibcpp_wchar_t_is_signed): Define based on compiler predefined __WCHAR_UNSIGNED__. From-SVN: r56646
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/c-common.c32
-rw-r--r--gcc/doc/cpp.texi20
-rw-r--r--libstdc++-v3/ChangeLog10
-rw-r--r--libstdc++-v3/include/std/std_limits.h130
5 files changed, 119 insertions, 83 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 17b0ffe..223d00d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2002-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * c-common.c (builtin_define_type_precision): New function.
+ (cb_register_builtins): Use it. Define __WCHAR_UNSIGNED__ is
+ wchar_t is unsigned in C++.
+ * doc/cpp.texi (Common Predefined Macros): Document
+ __WCHAR_UNSIGNED__, __CHAR_BIT__, __WCHAR_BIT__, __SHRT_BIT__,
+ __INT_BIT__, __LONG_BIT__, __LONG_LONG_BIT__, __FLOAT_BIT__,
+ __DOUBLE_BIT__, __LONG_DOUBLE_BIT__.
+
2002-08-28 Sylvain Pion <pion@cs.nyu.edu>
* doc/invoke.texi (-Wreorder): Remove remaining pieces from the generic
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 913aec1..4587991 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -760,9 +760,10 @@ static bool get_nonnull_operand PARAMS ((tree,
unsigned HOST_WIDE_INT *));
void builtin_define_std PARAMS ((const char *));
static void builtin_define_with_value PARAMS ((const char *, const char *,
- int));
+ int));
static void builtin_define_type_max PARAMS ((const char *, tree, int));
static void cpp_define_data_format PARAMS ((cpp_reader *));
+static void builtin_define_type_precision PARAMS ((const char *, tree));
/* Table of machine-independent attributes common to all C-like languages. */
const struct attribute_spec c_common_attribute_table[] =
@@ -4765,6 +4766,17 @@ cpp_define_data_format (pfile)
builtin_define_with_value ("__GCC_FLOAT_FORMAT__", format, 0);
}
+/* Define NAME with value TYPE precision. */
+static void
+builtin_define_type_precision (name, type)
+ const char *name;
+ tree type;
+{
+ char buf[8];
+ sprintf (buf, "%d", (int) TYPE_PRECISION (type));
+ builtin_define_with_value (name, buf, 0);
+}
+
/* Hook that registers front end and target-specific built-ins. */
void
cb_register_builtins (pfile)
@@ -4807,11 +4819,16 @@ cb_register_builtins (pfile)
builtin_define_type_max ("__LONG_MAX__", long_integer_type_node, 1);
builtin_define_type_max ("__LONG_LONG_MAX__", long_long_integer_type_node, 2);
- {
- char buf[8];
- sprintf (buf, "%d", (int) TYPE_PRECISION (signed_char_type_node));
- builtin_define_with_value ("__CHAR_BIT__", buf, 0);
- }
+ builtin_define_type_precision ("__CHAR_BIT__", char_type_node);
+ builtin_define_type_precision ("__WCHAR_BIT__", wchar_type_node);
+ builtin_define_type_precision ("__SHRT_BIT__", short_integer_type_node);
+ builtin_define_type_precision ("__INT_BIT__", integer_type_node);
+ builtin_define_type_precision ("__LONG_BIT__", long_integer_type_node);
+ builtin_define_type_precision ("__LONG_LONG_BIT__",
+ long_long_integer_type_node);
+ builtin_define_type_precision ("__FLOAT_BIT__", float_type_node);
+ builtin_define_type_precision ("__DOUBLE_BIT__", double_type_node);
+ builtin_define_type_precision ("__LONG_DOUBLE_BIT__", long_double_type_node);
/* For use in assembly language. */
builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
@@ -4849,6 +4866,9 @@ cb_register_builtins (pfile)
if (!flag_signed_char)
cpp_define (pfile, "__CHAR_UNSIGNED__");
+ if (c_language == clk_cplusplus && TREE_UNSIGNED (wchar_type_node))
+ cpp_define (pfile, "__WCHAR_UNSIGNED__");
+
cpp_define_data_format (pfile);
/* Make the choice of ObjC runtime visible to source code. */
diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi
index bb0c39c..0770e41 100644
--- a/gcc/doc/cpp.texi
+++ b/gcc/doc/cpp.texi
@@ -1972,6 +1972,10 @@ unsigned on the target machine. It exists to cause the standard header
file @file{limits.h} to work correctly. You should not use this macro
yourself; instead, refer to the standard macros defined in @file{limits.h}.
+@item __WCHAR_UNSIGNED__
+Like @code{__CHAR_UNSIGNED__}, this macro is defined if and only if the
+data type @code{wchar_t} is unsigned and the front-end is in C++ mode.
+
@item __REGISTER_PREFIX__
This macro expands to a single token (not a string constant) which is
the prefix applied to CPU register names in assembly language for this
@@ -2002,6 +2006,22 @@ typedefs, respectively. They exist to make the standard header files
these macros directly; instead, include the appropriate headers and use
the typedefs.
+@item __CHAR_BIT__
+@itemx __WCHAR_BIT__
+@itemx __SHRT_BIT__
+@itemx __INT_BIT__
+@itemx __LONG_BIT__
+@itemx __LONG_LONG_BIT__
+@itemx __FLOAT_BIT__
+@itemx __DOUBLE_BIT__
+@itemx __LONG_DOUBLE_BIT__
+These macros are defined to the number of bits used in the
+representation of the data types @code{char}, @code{wchar_t},
+@code{short}, @code{int}, @code{long}, @code{long long}, @code{float},
+@code{double} and @code{long double}. They exist to make the standard
+header given numerical limits work correctly. You should not use
+these macros directly; instead, include the appropriate headers.
+
@item __USING_SJLJ_EXCEPTIONS__
This macro is defined, with value 1, if the compiler uses the old
mechanism based on @code{setjmp} and @code{longjmp} for exception
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 86b6d84..0320356 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,13 @@
+2002-08-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * include/std/std_limits.h (__glibcpp_char_bits,
+ __glibcpp_short_bits, __glibcpp_int_bits, __glibcpp_long_bits,
+ __glibcpp_long_long_bits, __glibcpp_float_bits,
+ __glibcpp_double_bits, __glibcpp_long_double_bits): Remove. Use
+ compiler predifined macros.
+ (__glibcpp_wchar_t_is_signed): Define based on compiler predefined
+ __WCHAR_UNSIGNED__.
+
2002-08-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
* include/std/std_limits.h (__glibcpp_f32_infinity_bytes,
diff --git a/libstdc++-v3/include/std/std_limits.h b/libstdc++-v3/include/std/std_limits.h
index f1878a7..190cfdf 100644
--- a/libstdc++-v3/include/std/std_limits.h
+++ b/libstdc++-v3/include/std/std_limits.h
@@ -77,44 +77,20 @@
// definitions given here.
//
-// These values can be overridden in the target configuration file.
-// The default values are appropriate for many 32-bit targets.
-
-#ifndef __glibcpp_char_bits
-# define __glibcpp_char_bits 8
-#endif
#ifdef __CHAR_UNSIGNED__
# define __glibcpp_plain_char_is_signed false
#else
# define __glibcpp_plain_char_is_signed true
#endif
-#ifndef __glibcpp_short_bits
-# define __glibcpp_short_bits 16
-#endif
-#ifndef __glibcpp_int_bits
-# define __glibcpp_int_bits 32
-#endif
-#ifndef __glibcpp_long_bits
-# define __glibcpp_long_bits 32
-#endif
-#ifndef __glibcpp_wchar_t_bits
-# define __glibcpp_wchar_t_bits 32
-#endif
-#ifndef __glibcpp_wchar_t_is_signed
+
+#ifndef __WCHAR_UNSIGNED__
+# define __glibcpp_wchar_t_is_signed false
+#else
# define __glibcpp_wchar_t_is_signed true
#endif
-#ifndef __glibcpp_long_long_bits
-# define __glibcpp_long_long_bits 64
-#endif
-#ifndef __glibcpp_float_bits
-# define __glibcpp_float_bits 32
-#endif
-#ifndef __glibcpp_double_bits
-# define __glibcpp_double_bits 64
-#endif
-#ifndef __glibcpp_long_double_bits
-# define __glibcpp_long_double_bits 128
-#endif
+
+// These values can be overridden in the target configuration file.
+// The default values are appropriate for many 32-bit targets.
#ifndef __glibcpp_char_traps
# define __glibcpp_char_traps true
@@ -430,7 +406,7 @@
#ifndef __glibcpp_signed_char_is_modulo
# define __glibcpp_signed_char_is_modulo true
#endif
-#if __glibcpp_char_bits == 8
+#if __CHAR_BIT__ == 8
# define __glibcpp_signed_char_min __glibcpp_s8_min
# define __glibcpp_signed_char_max __glibcpp_s8_max
# define __glibcpp_signed_char_digits __glibcpp_s8_digits
@@ -439,7 +415,7 @@
# define __glibcpp_unsigned_char_max __glibcpp_u8_max
# define __glibcpp_unsigned_char_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_char_digits10 __glibcpp_u8_digits10
-#elif __glibcpp_char_bits == 16
+#elif __CHAR_BIT__ == 16
# define __glibcpp_signed_char_min __glibcpp_s16_min
# define __glibcpp_signed_char_max __glibcpp_s16_max
# define __glibcpp_signed_char_digits __glibcpp_s16_digits
@@ -448,7 +424,7 @@
# define __glibcpp_unsigned_char_max __glibcpp_u16_max
# define __glibcpp_unsigned_char_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_char_digits10 __glibcpp_u16_digits10
-#elif __glibcpp_char_bits == 32
+#elif __CHAR_BIT__ == 32
# define __glibcpp_signed_char_min (signed char)__glibcpp_s32_min
# define __glibcpp_signed_char_max (signed char)__glibcpp_s32_max
# define __glibcpp_signed_char_digits __glibcpp_s32_digits
@@ -457,7 +433,7 @@
# define __glibcpp_unsigned_char_max (unsigned char)__glibcpp_u32_max
# define __glibcpp_unsigned_char_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_char_digits10 __glibcpp_u32_digits10
-#elif __glibcpp_char_bits == 64
+#elif __CHAR_BIT__ == 64
# define __glibcpp_signed_char_min (signed char)__glibcpp_s64_min
# define __glibcpp_signed_char_max (signed char)__glibcpp_s64_max
# define __glibcpp_signed_char_digits __glibcpp_s64_digits
@@ -489,7 +465,7 @@
#ifndef __glibcpp_signed_short_is_modulo
# define __glibcpp_signed_short_is_modulo true
#endif
-#if __glibcpp_short_bits == 8
+#if __SHRT_BIT__ == 8
# define __glibcpp_signed_short_min __glibcpp_s8_min
# define __glibcpp_signed_short_max __glibcpp_s8_max
# define __glibcpp_signed_short_digits __glibcpp_s8_digits
@@ -498,7 +474,7 @@
# define __glibcpp_unsigned_short_max __glibcpp_u8_max
# define __glibcpp_unsigned_short_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_short_digits10 __glibcpp_u8_digits10
-#elif __glibcpp_short_bits == 16
+#elif __SHRT_BIT__ == 16
# define __glibcpp_signed_short_min __glibcpp_s16_min
# define __glibcpp_signed_short_max __glibcpp_s16_max
# define __glibcpp_signed_short_digits __glibcpp_s16_digits
@@ -507,7 +483,7 @@
# define __glibcpp_unsigned_short_max __glibcpp_u16_max
# define __glibcpp_unsigned_short_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_short_digits10 __glibcpp_u16_digits10
-#elif __glibcpp_short_bits == 32
+#elif __SHRT_BIT__ == 32
# define __glibcpp_signed_short_min (short)__glibcpp_s32_min
# define __glibcpp_signed_short_max (short)__glibcpp_s32_max
# define __glibcpp_signed_short_digits __glibcpp_s32_digits
@@ -516,7 +492,7 @@
# define __glibcpp_unsigned_short_max (unsigned short)__glibcpp_u32_max
# define __glibcpp_unsigned_short_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_short_digits10 __glibcpp_u32_digits10
-#elif __glibcpp_short_bits == 64
+#elif __SHRT_BIT__ == 64
# define __glibcpp_signed_short_min (short)__glibcpp_s64_min
# define __glibcpp_signed_short_max (short)__glibcpp_s64_max
# define __glibcpp_signed_short_digits __glibcpp_s64_digits
@@ -536,7 +512,7 @@
#ifndef __glibcpp_signed_int_is_modulo
# define __glibcpp_signed_int_is_modulo true
#endif
-#if __glibcpp_int_bits == 8
+#if __INT_BIT__ == 8
# define __glibcpp_signed_int_min __glibcpp_s8_min
# define __glibcpp_signed_int_max __glibcpp_s8_max
# define __glibcpp_signed_int_digits __glibcpp_s8_digits
@@ -545,7 +521,7 @@
# define __glibcpp_unsigned_int_max __glibcpp_u8_max
# define __glibcpp_unsigned_int_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_int_digits10 __glibcpp_u8_digits10
-#elif __glibcpp_int_bits == 16
+#elif __INT_BIT__ == 16
# define __glibcpp_signed_int_min __glibcpp_s16_min
# define __glibcpp_signed_int_max __glibcpp_s16_max
# define __glibcpp_signed_int_digits __glibcpp_s16_digits
@@ -554,7 +530,7 @@
# define __glibcpp_unsigned_int_max __glibcpp_u16_max
# define __glibcpp_unsigned_int_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_int_digits10 __glibcpp_u16_digits10
-#elif __glibcpp_int_bits == 32
+#elif __INT_BIT__ == 32
# define __glibcpp_signed_int_min (int)__glibcpp_s32_min
# define __glibcpp_signed_int_max (int)__glibcpp_s32_max
# define __glibcpp_signed_int_digits __glibcpp_s32_digits
@@ -563,7 +539,7 @@
# define __glibcpp_unsigned_int_max (unsigned)__glibcpp_u32_max
# define __glibcpp_unsigned_int_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_int_digits10 __glibcpp_u32_digits10
-#elif __glibcpp_int_bits == 64
+#elif __INT_BIT__ == 64
# define __glibcpp_signed_int_min (int)__glibcpp_s64_min
# define __glibcpp_signed_int_max (int)__glibcpp_s64_max
# define __glibcpp_signed_int_digits __glibcpp_s64_digits
@@ -583,7 +559,7 @@
#ifndef __glibcpp_signed_long_is_modulo
# define __glibcpp_signed_long_is_modulo true
#endif
-#if __glibcpp_long_bits == 8
+#if __LONG_BIT__ == 8
# define __glibcpp_signed_long_min __glibcpp_s8_min
# define __glibcpp_signed_long_max __glibcpp_s8_max
# define __glibcpp_signed_long_digits __glibcpp_s8_digits
@@ -592,7 +568,7 @@
# define __glibcpp_unsigned_long_max __glibcpp_u8_max
# define __glibcpp_unsigned_long_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_long_digits10 __glibcpp_u8_digits10
-#elif __glibcpp_long_bits == 16
+#elif __LONG_BIT__ == 16
# define __glibcpp_signed_long_min __glibcpp_s16_min
# define __glibcpp_signed_long_max __glibcpp_s16_max
# define __glibcpp_signed_long_digits __glibcpp_s16_digits
@@ -601,7 +577,7 @@
# define __glibcpp_unsigned_long_max __glibcpp_u16_max
# define __glibcpp_unsigned_long_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_long_digits10 __glibcpp_u16_digits10
-#elif __glibcpp_long_bits == 32
+#elif __LONG_BIT__ == 32
# define __glibcpp_signed_long_min __glibcpp_s32_min
# define __glibcpp_signed_long_max __glibcpp_s32_max
# define __glibcpp_signed_long_digits __glibcpp_s32_digits
@@ -610,7 +586,7 @@
# define __glibcpp_unsigned_long_max __glibcpp_u32_max
# define __glibcpp_unsigned_long_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_long_digits10 __glibcpp_u32_digits10
-#elif __glibcpp_long_bits == 64
+#elif __LONG_BIT__ == 64
# define __glibcpp_signed_long_min (long)__glibcpp_s64_min
# define __glibcpp_signed_long_max (long)__glibcpp_s64_max
# define __glibcpp_signed_long_digits __glibcpp_s64_digits
@@ -630,7 +606,7 @@
#ifndef __glibcpp_signed_long_long_is_modulo
# define __glibcpp_signed_long_long_is_modulo true
#endif
-#if __glibcpp_long_long_bits == 8
+#if __LONG_LONG_BIT__ == 8
# define __glibcpp_signed_long_long_min __glibcpp_s8_min
# define __glibcpp_signed_long_long_max __glibcpp_s8_max
# define __glibcpp_signed_long_long_digits __glibcpp_s8_digits
@@ -639,7 +615,7 @@
# define __glibcpp_unsigned_long_long_max __glibcpp_u8_max
# define __glibcpp_unsigned_long_long_digits __glibcpp_u8_digits
# define __glibcpp_unsigned_long_long_digits10 __glibcpp_u8_digits10
-#elif __glibcpp_long_long_bits == 16
+#elif __LONG_LONG_BIT__ == 16
# define __glibcpp_signed_long_long_min __glibcpp_s16_min
# define __glibcpp_signed_long_long_max __glibcpp_s16_max
# define __glibcpp_signed_long_long_digits __glibcpp_s16_digits
@@ -648,7 +624,7 @@
# define __glibcpp_unsigned_long_long_max __glibcpp_u16_max
# define __glibcpp_unsigned_long_long_digits __glibcpp_u16_digits
# define __glibcpp_unsigned_long_long_digits10 __glibcpp_u16_digits10
-#elif __glibcpp_long_long_bits == 32
+#elif __LONG_LONG_BIT__ == 32
# define __glibcpp_signed_long_long_min __glibcpp_s32_min
# define __glibcpp_signed_long_long_max __glibcpp_s32_max
# define __glibcpp_signed_long_long_digits __glibcpp_s32_digits
@@ -657,7 +633,7 @@
# define __glibcpp_unsigned_long_long_max __glibcpp_u32_max
# define __glibcpp_unsigned_long_long_digits __glibcpp_u32_digits
# define __glibcpp_unsigned_long_long_digits10 __glibcpp_u32_digits10
-#elif __glibcpp_long_long_bits == 64
+#elif __LONG_LONG_BIT__ == 64
# define __glibcpp_signed_long_long_min __glibcpp_s64_min
# define __glibcpp_signed_long_long_max __glibcpp_s64_max
# define __glibcpp_signed_long_long_digits __glibcpp_s64_digits
@@ -679,22 +655,22 @@
# define __glibcpp_wchar_t_is_modulo true
#endif
#if __glibcpp_wchar_t_is_signed
-# if __glibcpp_wchar_t_bits == 8
+# if __WCHAR_BIT__ == 8
# define __glibcpp_wchar_t_min __glibcpp_s8_min
# define __glibcpp_wchar_t_max __glibcpp_s8_max
# define __glibcpp_wchar_t_digits __glibcpp_s8_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_s8_digits10
-# elif __glibcpp_wchar_t_bits == 16
+# elif __WCHAR_BIT__ == 16
# define __glibcpp_wchar_t_min __glibcpp_s16_min
# define __glibcpp_wchar_t_max __glibcpp_s16_max
# define __glibcpp_wchar_t_digits __glibcpp_s16_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_s16_digits10
-# elif __glibcpp_wchar_t_bits == 32
+# elif __WCHAR_BIT__ == 32
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s32_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s32_max
# define __glibcpp_wchar_t_digits __glibcpp_s32_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_s32_digits10
-# elif __glibcpp_wchar_t_bits == 64
+# elif __WCHAR_BIT__ == 64
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_s64_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_s64_max
# define __glibcpp_wchar_t_digits __glibcpp_s64_digits
@@ -703,22 +679,22 @@
// You must define these macros in the configuration file.
# endif
#else
-# if __glibcpp_wchar_t_bits == 8
+# if __WCHAR_BIT__ == 8
# define __glibcpp_wchar_t_min __glibcpp_u8_min
# define __glibcpp_wchar_t_max __glibcpp_u8_max
# define __glibcpp_wchar_t_digits __glibcpp_u8_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_u8_digits10
-# elif __glibcpp_wchar_t_bits == 16
+# elif __WCHAR_BIT__ == 16
# define __glibcpp_wchar_t_min __glibcpp_u16_min
# define __glibcpp_wchar_t_max __glibcpp_u16_max
# define __glibcpp_wchar_t_digits __glibcpp_u16_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_u16_digits10
-# elif __glibcpp_wchar_t_bits == 32
+# elif __WCHAR_BIT__ == 32
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u32_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u32_max
# define __glibcpp_wchar_t_digits __glibcpp_u32_digits
# define __glibcpp_wchar_t_digits10 __glibcpp_u32_digits10
-# elif __glibcpp_wchar_t_bits == 64
+# elif __WCHAR_BIT__ == 64
# define __glibcpp_wchar_t_min (wchar_t)__glibcpp_u64_min
# define __glibcpp_wchar_t_max (wchar_t)__glibcpp_u64_max
# define __glibcpp_wchar_t_digits __glibcpp_u64_digits
@@ -731,7 +707,7 @@
// float
//
-#if __glibcpp_float_bits == 32
+#if __FLOAT_BIT__ == 32
# define __glibcpp_float_min __glibcpp_f32_min
# define __glibcpp_float_max __glibcpp_f32_max
# define __glibcpp_float_digits __glibcpp_f32_digits
@@ -752,7 +728,7 @@
# define __glibcpp_float_has_SNaN __glibcpp_f32_has_SNaN
# define __glibcpp_float_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_float_is_iec559 __glibcpp_f32_is_iec559
-#elif __glibcpp_float_bits == 64
+#elif __FLOAT_BIT__ == 64
# define __glibcpp_float_min __glibcpp_f64_min
# define __glibcpp_float_max __glibcpp_f64_max
# define __glibcpp_float_digits __glibcpp_f64_digits
@@ -773,7 +749,7 @@
# define __glibcpp_float_has_SNaN __glibcpp_f64_has_SNaN
# define __glibcpp_float_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_float_is_iec559 __glibcpp_f64_is_iec559
-#elif __glibcpp_float_bits == 80
+#elif __FLOAT_BIT__ == 80
# define __glibcpp_float_min __glibcpp_f80_min
# define __glibcpp_float_max __glibcpp_f80_max
# define __glibcpp_float_digits __glibcpp_f80_digits
@@ -850,7 +826,7 @@
// double
-#if __glibcpp_double_bits == 32
+#if __DOUBLE_BIT__ == 32
# define __glibcpp_double_min __glibcpp_f32_min
# define __glibcpp_double_max __glibcpp_f32_max
# define __glibcpp_double_digits __glibcpp_f32_digits
@@ -871,7 +847,7 @@
# define __glibcpp_double_has_SNaN __glibcpp_f32_has_SNaN
# define __glibcpp_double_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_double_is_iec559 __glibcpp_f32_is_iec559
-#elif __glibcpp_double_bits == 64
+#elif __DOUBLE_BIT__ == 64
# define __glibcpp_double_min __glibcpp_f64_min
# define __glibcpp_double_max __glibcpp_f64_max
# define __glibcpp_double_digits __glibcpp_f64_digits
@@ -892,7 +868,7 @@
# define __glibcpp_double_has_SNaN __glibcpp_f64_has_SNaN
# define __glibcpp_double_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_double_is_iec559 __glibcpp_f64_is_iec559
-#elif __glibcpp_double_bits == 80
+#elif __DOUBLE_BIT__ == 80
# define __glibcpp_double_min __glibcpp_f80_min
# define __glibcpp_double_max __glibcpp_f80_max
# define __glibcpp_double_digits __glibcpp_f80_digits
@@ -969,7 +945,7 @@
// long double
-#if __glibcpp_long_double_bits == 32
+#if __LONG_DOUBLE_BIT__ == 32
# define __glibcpp_long_double_min __glibcpp_f32_min
# define __glibcpp_long_double_max __glibcpp_f32_max
# define __glibcpp_long_double_digits __glibcpp_f32_digits
@@ -990,7 +966,7 @@
# define __glibcpp_long_double_has_SNaN __glibcpp_f32_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f32_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f32_is_iec559
-#elif __glibcpp_long_double_bits == 64
+#elif __LONG_DOUBLE_BIT__ == 64
# define __glibcpp_long_double_min __glibcpp_f64_min
# define __glibcpp_long_double_max __glibcpp_f64_max
# define __glibcpp_long_double_digits __glibcpp_f64_digits
@@ -1011,7 +987,7 @@
# define __glibcpp_long_double_has_SNaN __glibcpp_f64_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f64_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f64_is_iec559
-#elif __glibcpp_long_double_bits == 80
+#elif __LONG_DOUBLE_BIT__ == 80
# define __glibcpp_long_double_min __glibcpp_f80_min
# define __glibcpp_long_double_max __glibcpp_f80_max
# define __glibcpp_long_double_digits __glibcpp_f80_digits
@@ -1032,7 +1008,7 @@
# define __glibcpp_long_double_has_SNaN __glibcpp_f80_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f80_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f80_is_iec559
-#elif __glibcpp_long_double_bits == 96
+#elif __LONG_DOUBLE_BIT__ == 96
# define __glibcpp_long_double_min __glibcpp_f96_min
# define __glibcpp_long_double_max __glibcpp_f96_max
# define __glibcpp_long_double_digits __glibcpp_f96_digits
@@ -1053,7 +1029,7 @@
# define __glibcpp_long_double_has_SNaN __glibcpp_f96_has_SNaN
# define __glibcpp_long_double_has_denorm __glibcpp_f96_has_denorm
# define __glibcpp_long_double_is_iec559 __glibcpp_f96_is_iec559
-#elif __glibcpp_long_double_bits == 128
+#elif __LONG_DOUBLE_BIT__ == 128
# define __glibcpp_long_double_min __glibcpp_f128_min
# define __glibcpp_long_double_max __glibcpp_f128_max
# define __glibcpp_long_double_digits __glibcpp_f128_digits
@@ -1136,13 +1112,13 @@ namespace std
// knows about better than we do.) -- Gaby
typedef unsigned char __glibcpp_byte;
#define __glibcpp_word_bits 32
-#if __glibcpp_char_bits == __glibcpp_word_bits
+#if __CHAR_BIT__ == __glibcpp_word_bits
# define __glibcpp_word unsigned char
-#elif __glibcpp_short_bits == __glibcpp_word_bits
+#elif __SHRT_BIT__ == __glibcpp_word_bits
# define __glibcpp_word unsigned short
-#elif __glibcpp_int_bits == __glibcpp_word_bits
+#elif __INT_BIT__ == __glibcpp_word_bits
# define __glibcpp_word unsigned int
-#elif __glibcpp_long_bits == __glibcpp_word_bits
+#elif __LONG_BIT__ == __glibcpp_word_bits
# define __glibcpp_word unsigned long
#endif
@@ -1150,7 +1126,7 @@ namespace std
// point data types. Maybe we could avoid the conditional #defines by
// using the aligned_storage<> extension. -- Gaby
typedef const
-#if __glibcpp_float_bits % __glibcpp_word_bits == 0
+#if __FLOAT_BIT__ % __glibcpp_word_bits == 0
__glibcpp_word __float_storage[sizeof (float) / sizeof (__glibcpp_word)]
#else
__glibcpp_byte __float_storage[sizeof (float)]
@@ -1158,7 +1134,7 @@ namespace std
__attribute__((__aligned__(__alignof__(float))));
typedef const
-#if __glibcpp_double_bits % __glibcpp_word_bits == 0
+#if __DOUBLE_BIT__ % __glibcpp_word_bits == 0
__glibcpp_word __double_storage[sizeof (double) / sizeof (__glibcpp_word)]
#else
__glibcpp_byte __double_storage[sizeof (double)]
@@ -1166,7 +1142,7 @@ namespace std
__attribute__((__aligned__(__alignof__(double))));
typedef const
-#if __glibcpp_long_double_bits % __glibcpp_word_bits == 0
+#if __LONG_DOUBLE_BIT__ % __glibcpp_word_bits == 0
__glibcpp_word __long_double_storage[sizeof (long double) / sizeof (__glibcpp_word)]
#else
__glibcpp_byte __long_double_storage[sizeof (long double)]