This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: V3 PATCH: numeric_limits<> support, fix PR/3865


Graham Stott <graham.stott@btinternet.com> writes:

| This patch causes problems building x86 cross v850-elf, and arm-elf toolchains
| which both fail with
| 
| /usr/local/src/uberbaum/libstdc++-v3/src/limits.cc:56: error: excess elements
|     in aggregate initializer
| /usr/local/src/uberbaum/libstdc++-v3/src/limits.cc:58: error: excess elements
|     in aggregate initializer
| /usr/local/src/uberbaum/libstdc++-v3/src/limits.cc:60: error: excess elements
|     in aggregate initializer
| /usr/local/src/uberbaum/libstdc++-v3/src/limits.cc:62: error: excess elements
|     in aggregate initializer
| 
| I suspect that other ports are also affected.

The patch below lets me have a clean build for a cross-compiler mips-elf.

It predefined several data type precision we're trying to second-guess
or having duplicated configuration files for.  When compiling C++, it
also predefined __WCHAR_UNSIGNED__ based on the fact that wchar_t (a
distinct type in C++) is unsigned or not.

I'm about to apply it in order to bring mainline V3 buildable  on
the affected ports.

Comments?

-- Gaby

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__. 

Index: gcc/c-common.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/c-common.c,v
retrieving revision 1.369
diff -p -r1.369 c-common.c
*** gcc/c-common.c	27 Aug 2002 22:14:44 -0000	1.369
--- gcc/c-common.c	28 Aug 2002 21:17:24 -0000
*************** static bool get_nonnull_operand		PARAMS 
*** 760,768 ****
  						 unsigned HOST_WIDE_INT *));
  void builtin_define_std PARAMS ((const char *));
  static void builtin_define_with_value PARAMS ((const char *, const char *,
! 					       int));
  static void builtin_define_type_max PARAMS ((const char *, tree, int));
  static void cpp_define_data_format PARAMS ((cpp_reader *));
  
  /* Table of machine-independent attributes common to all C-like languages.  */
  const struct attribute_spec c_common_attribute_table[] =
--- 760,769 ----
  						 unsigned HOST_WIDE_INT *));
  void builtin_define_std PARAMS ((const char *));
  static void builtin_define_with_value PARAMS ((const char *, const char *,
!                                                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[] =
*************** cpp_define_data_format (pfile)
*** 4765,4770 ****
--- 4766,4782 ----
    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)
*************** cb_register_builtins (pfile)
*** 4807,4817 ****
    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);
!   }
  
    /* For use in assembly language.  */
    builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
--- 4819,4834 ----
    builtin_define_type_max ("__LONG_MAX__", long_integer_type_node, 1);
    builtin_define_type_max ("__LONG_LONG_MAX__", long_long_integer_type_node, 2);
  
!   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);
*************** cb_register_builtins (pfile)
*** 4848,4853 ****
--- 4865,4873 ----
  
    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);
    
Index: libstdc++-v3/include/std/std_limits.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/std/std_limits.h,v
retrieving revision 1.7
diff -p -r1.7 std_limits.h
*** libstdc++-v3/include/std/std_limits.h	27 Aug 2002 20:30:26 -0000	1.7
--- libstdc++-v3/include/std/std_limits.h	28 Aug 2002 21:17:27 -0000
***************
*** 77,120 ****
  // 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
  #  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
  
  #ifndef __glibcpp_char_traps
  #  define __glibcpp_char_traps true
--- 77,96 ----
  // definitions given here.
  //
  
  #ifdef __CHAR_UNSIGNED__
  #  define __glibcpp_plain_char_is_signed false
  #else
  #  define __glibcpp_plain_char_is_signed true
  #endif
! 
! #ifndef __WCHAR_UNSIGNED__
! #  define __glibcpp_wchar_t_is_signed false
! #else
  #  define __glibcpp_wchar_t_is_signed true
  #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,436 ****
  #ifndef __glibcpp_signed_char_is_modulo
  #  define __glibcpp_signed_char_is_modulo true
  #endif
! #if __glibcpp_char_bits == 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
--- 406,412 ----
  #ifndef __glibcpp_signed_char_is_modulo
  #  define __glibcpp_signed_char_is_modulo true
  #endif
! #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,445 ****
  #  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
  #  define __glibcpp_signed_char_min __glibcpp_s16_min
  #  define __glibcpp_signed_char_max __glibcpp_s16_max
  #  define __glibcpp_signed_char_digits __glibcpp_s16_digits
--- 415,421 ----
  #  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 __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,454 ****
  #  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
  #  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
--- 424,430 ----
  #  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 __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,463 ****
  #  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
  #  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
--- 433,439 ----
  #  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 __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,495 ****
  #ifndef __glibcpp_signed_short_is_modulo
  #  define __glibcpp_signed_short_is_modulo true
  #endif
! #if __glibcpp_short_bits == 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
--- 465,471 ----
  #ifndef __glibcpp_signed_short_is_modulo
  #  define __glibcpp_signed_short_is_modulo true
  #endif
! #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,504 ****
  #  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
  #  define __glibcpp_signed_short_min __glibcpp_s16_min
  #  define __glibcpp_signed_short_max __glibcpp_s16_max
  #  define __glibcpp_signed_short_digits __glibcpp_s16_digits
--- 474,480 ----
  #  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 __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,513 ****
  #  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
  #  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
--- 483,489 ----
  #  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 __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,522 ****
  #  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
  #  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
--- 492,498 ----
  #  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 __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,542 ****
  #ifndef __glibcpp_signed_int_is_modulo
  #  define __glibcpp_signed_int_is_modulo true
  #endif
! #if __glibcpp_int_bits == 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
--- 512,518 ----
  #ifndef __glibcpp_signed_int_is_modulo
  #  define __glibcpp_signed_int_is_modulo true
  #endif
! #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,551 ****
  #  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
  #  define __glibcpp_signed_int_min __glibcpp_s16_min
  #  define __glibcpp_signed_int_max __glibcpp_s16_max
  #  define __glibcpp_signed_int_digits __glibcpp_s16_digits
--- 521,527 ----
  #  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 __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,560 ****
  #  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
  #  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
--- 530,536 ----
  #  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 __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,569 ****
  #  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
  #  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
--- 539,545 ----
  #  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 __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,589 ****
  #ifndef __glibcpp_signed_long_is_modulo
  #  define __glibcpp_signed_long_is_modulo true
  #endif
! #if __glibcpp_long_bits == 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
--- 559,565 ----
  #ifndef __glibcpp_signed_long_is_modulo
  #  define __glibcpp_signed_long_is_modulo true
  #endif
! #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,598 ****
  #  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
  #  define __glibcpp_signed_long_min __glibcpp_s16_min
  #  define __glibcpp_signed_long_max __glibcpp_s16_max
  #  define __glibcpp_signed_long_digits __glibcpp_s16_digits
--- 568,574 ----
  #  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 __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,607 ****
  #  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
  #  define __glibcpp_signed_long_min __glibcpp_s32_min
  #  define __glibcpp_signed_long_max __glibcpp_s32_max
  #  define __glibcpp_signed_long_digits __glibcpp_s32_digits
--- 577,583 ----
  #  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 __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,616 ****
  #  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
  #  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
--- 586,592 ----
  #  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 __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,636 ****
  #ifndef __glibcpp_signed_long_long_is_modulo
  #  define __glibcpp_signed_long_long_is_modulo true
  #endif
! #if __glibcpp_long_long_bits == 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
--- 606,612 ----
  #ifndef __glibcpp_signed_long_long_is_modulo
  #  define __glibcpp_signed_long_long_is_modulo true
  #endif
! #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,645 ****
  #  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
  #  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
--- 615,621 ----
  #  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 __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,654 ****
  #  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
  #  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
--- 624,630 ----
  #  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 __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,663 ****
  #  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
  #  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
--- 633,639 ----
  #  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 __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,700 ****
  #  define __glibcpp_wchar_t_is_modulo true
  #endif
  #if __glibcpp_wchar_t_is_signed
! #  if __glibcpp_wchar_t_bits == 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
  #    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
  #    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
  #    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
--- 655,676 ----
  #  define __glibcpp_wchar_t_is_modulo true
  #endif
  #if __glibcpp_wchar_t_is_signed
! #  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 __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 __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 __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,724 ****
  // You must define these macros in the configuration file.
  #  endif
  #else
! #  if __glibcpp_wchar_t_bits == 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
  #    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
  #    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
  #    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
--- 679,700 ----
  // You must define these macros in the configuration file.
  #  endif
  #else
! #  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 __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 __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 __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,737 ****
  // float
  //
  
! #if __glibcpp_float_bits == 32
  #  define __glibcpp_float_min __glibcpp_f32_min
  #  define __glibcpp_float_max __glibcpp_f32_max
  #  define __glibcpp_float_digits __glibcpp_f32_digits
--- 707,713 ----
  // float
  //
  
! #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,758 ****
  #  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
  #  define __glibcpp_float_min __glibcpp_f64_min
  #  define __glibcpp_float_max __glibcpp_f64_max
  #  define __glibcpp_float_digits __glibcpp_f64_digits
--- 728,734 ----
  #  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 __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,779 ****
  #  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
  #  define __glibcpp_float_min __glibcpp_f80_min
  #  define __glibcpp_float_max __glibcpp_f80_max
  #  define __glibcpp_float_digits __glibcpp_f80_digits
--- 749,755 ----
  #  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 __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,856 ****
  
  // double
  
! #if __glibcpp_double_bits == 32
  #  define __glibcpp_double_min __glibcpp_f32_min
  #  define __glibcpp_double_max __glibcpp_f32_max
  #  define __glibcpp_double_digits __glibcpp_f32_digits
--- 826,832 ----
  
  // double
  
! #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,877 ****
  #  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
  #  define __glibcpp_double_min __glibcpp_f64_min
  #  define __glibcpp_double_max __glibcpp_f64_max
  #  define __glibcpp_double_digits __glibcpp_f64_digits
--- 847,853 ----
  #  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 __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,898 ****
  #  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
  #  define __glibcpp_double_min __glibcpp_f80_min
  #  define __glibcpp_double_max __glibcpp_f80_max
  #  define __glibcpp_double_digits __glibcpp_f80_digits
--- 868,874 ----
  #  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 __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,975 ****
  
  // long double
  
! #if __glibcpp_long_double_bits == 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
--- 945,951 ----
  
  // long double
  
! #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,996 ****
  #  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
  #  define __glibcpp_long_double_min __glibcpp_f64_min
  #  define __glibcpp_long_double_max __glibcpp_f64_max
  #  define __glibcpp_long_double_digits __glibcpp_f64_digits
--- 966,972 ----
  #  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 __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,1017 ****
  #  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
  #  define __glibcpp_long_double_min __glibcpp_f80_min
  #  define __glibcpp_long_double_max __glibcpp_f80_max
  #  define __glibcpp_long_double_digits __glibcpp_f80_digits
--- 987,993 ----
  #  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 __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,1038 ****
  #  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
  #  define __glibcpp_long_double_min __glibcpp_f96_min
  #  define __glibcpp_long_double_max __glibcpp_f96_max
  #  define __glibcpp_long_double_digits __glibcpp_f96_digits
--- 1008,1014 ----
  #  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 __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,1059 ****
  #  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
  #  define __glibcpp_long_double_min __glibcpp_f128_min
  #  define __glibcpp_long_double_max __glibcpp_f128_max
  #  define __glibcpp_long_double_digits __glibcpp_f128_digits
--- 1029,1035 ----
  #  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 __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
*************** namespace std
*** 1136,1148 ****
    // knows about better than we do.) -- Gaby
    typedef unsigned char __glibcpp_byte;
  #define __glibcpp_word_bits 32
! #if __glibcpp_char_bits == __glibcpp_word_bits
  #  define __glibcpp_word unsigned char
! #elif __glibcpp_short_bits == __glibcpp_word_bits
  #  define __glibcpp_word unsigned short  
! #elif __glibcpp_int_bits == __glibcpp_word_bits
  #  define __glibcpp_word unsigned int
! #elif __glibcpp_long_bits == __glibcpp_word_bits
  #  define __glibcpp_word unsigned long
  #endif  
  
--- 1112,1124 ----
    // knows about better than we do.) -- Gaby
    typedef unsigned char __glibcpp_byte;
  #define __glibcpp_word_bits 32
! #if __CHAR_BIT__ == __glibcpp_word_bits
  #  define __glibcpp_word unsigned char
! #elif __SHRT_BIT__ == __glibcpp_word_bits
  #  define __glibcpp_word unsigned short  
! #elif __INT_BIT__ == __glibcpp_word_bits
  #  define __glibcpp_word unsigned int
! #elif __LONG_BIT__ == __glibcpp_word_bits
  #  define __glibcpp_word unsigned long
  #endif  
  
*************** namespace std
*** 1150,1156 ****
    // 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
      __glibcpp_word __float_storage[sizeof (float) / sizeof (__glibcpp_word)]
  #else
      __glibcpp_byte __float_storage[sizeof (float)]
--- 1126,1132 ----
    // point data types.  Maybe we could avoid the conditional #defines by
    // using the aligned_storage<> extension.  -- Gaby
    typedef const
! #if __FLOAT_BIT__ % __glibcpp_word_bits == 0
      __glibcpp_word __float_storage[sizeof (float) / sizeof (__glibcpp_word)]
  #else
      __glibcpp_byte __float_storage[sizeof (float)]
*************** namespace std
*** 1158,1164 ****
      __attribute__((__aligned__(__alignof__(float))));
  
    typedef const
! #if __glibcpp_double_bits % __glibcpp_word_bits == 0
      __glibcpp_word __double_storage[sizeof (double) / sizeof (__glibcpp_word)]
  #else
      __glibcpp_byte __double_storage[sizeof (double)]
--- 1134,1140 ----
      __attribute__((__aligned__(__alignof__(float))));
  
    typedef const
! #if __DOUBLE_BIT__ % __glibcpp_word_bits == 0
      __glibcpp_word __double_storage[sizeof (double) / sizeof (__glibcpp_word)]
  #else
      __glibcpp_byte __double_storage[sizeof (double)]
*************** namespace std
*** 1166,1172 ****
      __attribute__((__aligned__(__alignof__(double))));
  
    typedef const
! #if __glibcpp_long_double_bits % __glibcpp_word_bits == 0
      __glibcpp_word __long_double_storage[sizeof (long double) / sizeof (__glibcpp_word)]
  #else
      __glibcpp_byte __long_double_storage[sizeof (long double)]
--- 1142,1148 ----
      __attribute__((__aligned__(__alignof__(double))));
  
    typedef const
! #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)]
Index: gcc/doc/cpp.texi
===================================================================
RCS file: /cvs/gcc/egcs/gcc/doc/cpp.texi,v
retrieving revision 1.44
diff -p -r1.44 cpp.texi
*** gcc/doc/cpp.texi	27 Aug 2002 10:53:06 -0000	1.44
--- gcc/doc/cpp.texi	28 Aug 2002 21:17:30 -0000
*************** unsigned on the target machine.  It exis
*** 1972,1977 ****
--- 1972,1981 ----
  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
*************** typedefs, respectively.  They exist to m
*** 2001,2006 ****
--- 2005,2026 ----
  @file{stddef.h} and @file{wchar.h} work correctly.  You should not use
  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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]