diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-23 21:40:31 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-23 21:40:31 +0000 |
commit | 0f91ab4c2cc874fd53f593efc3128a4fede4388a (patch) | |
tree | afac22e637382a6bcf168b75648bf8e6cbc415a5 /libstdc++-v3 | |
parent | 8fb7623e98362ab0b492d9cf4efabb77c15b6d88 (diff) | |
download | ppe42-gcc-0f91ab4c2cc874fd53f593efc3128a4fede4388a.tar.gz ppe42-gcc-0f91ab4c2cc874fd53f593efc3128a4fede4388a.zip |
2001-10-22 Benjamin Kosnik <bkoz@redhat.com>
* config/cpu/i386/bits/limits.h: Move to...
* config/cpu/i386/bits/cpu_limits.h: ...here.
* config/cpu/cris/bits/cpu_limits.h: Same.
* config/cpu/powerpc/bits/cpu_limits.h: Same.
* config/cpu/x86-64/bits/cpu_limits.h: Same.
* config/cpu/alpha/bits/cpu_limits.h: New.
* config/cpu/m68k/bits/cpu_limits.h: New.
* config/cpu/s390/bits/cpu_limits.h: New.
* config/os/aix/bits/os_defines.h: Tweaks.
* config/os/bsd/freebsd/bits/os_defines.h: Same.
* config/os/bsd/netbsd/bits/os_defines.h: Same.
* config/os/djgpp/bits/os_defines.h: Same.
* config/os/generic/bits/os_defines.h: Same.
* config/os/gnu-linux/bits/os_defines.h: Same.
* config/os/hpux/bits/os_defines.h: Same.
* config/os/irix/irix5.2/bits/os_defines.h: Same.
* config/os/irix/irix6.5/bits/os_defines.h: Same.
* config/os/newlib/bits/os_defines.h: Same.
* config/os/solaris/solaris2.5/bits/os_defines.h: Same.
* config/os/solaris/solaris2.6/bits/os_defines.h: Same.
* config/os/solaris/solaris2.7/bits/os_defines.h: Same.
* include/bits/c++config: Remove include.
* include/bits/limits_generic.h: Remove.
* include/bits/std_limits.h: Include cpu_limits.h.
* include/Makefile.am: Fixup.
* src/limits.cc: Tweak.
* src/limits_generic.cc: Remove.
* src/gen-num-limits.cc: Remove.
* mknumeric_limits: Remove.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46445 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
41 files changed, 332 insertions, 2562 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 2e6231a7ee6..eb56ce37dc5 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,36 @@ +2001-10-22 Benjamin Kosnik <bkoz@redhat.com> + + * config/cpu/i386/bits/limits.h: Move to... + * config/cpu/i386/bits/cpu_limits.h: ...here. + * config/cpu/cris/bits/cpu_limits.h: Same. + * config/cpu/powerpc/bits/cpu_limits.h: Same. + * config/cpu/x86-64/bits/cpu_limits.h: Same. + * config/cpu/alpha/bits/cpu_limits.h: New. + * config/cpu/m68k/bits/cpu_limits.h: New. + * config/cpu/s390/bits/cpu_limits.h: New. + * config/os/aix/bits/os_defines.h: Tweaks. + * config/os/bsd/freebsd/bits/os_defines.h: Same. + * config/os/bsd/netbsd/bits/os_defines.h: Same. + * config/os/djgpp/bits/os_defines.h: Same. + * config/os/generic/bits/os_defines.h: Same. + * config/os/gnu-linux/bits/os_defines.h: Same. + * config/os/hpux/bits/os_defines.h: Same. + * config/os/irix/irix5.2/bits/os_defines.h: Same. + * config/os/irix/irix6.5/bits/os_defines.h: Same. + * config/os/newlib/bits/os_defines.h: Same. + * config/os/solaris/solaris2.5/bits/os_defines.h: Same. + * config/os/solaris/solaris2.6/bits/os_defines.h: Same. + * config/os/solaris/solaris2.7/bits/os_defines.h: Same. + + * include/bits/c++config: Remove include. + * include/bits/limits_generic.h: Remove. + * include/bits/std_limits.h: Include cpu_limits.h. + * include/Makefile.am: Fixup. + * src/limits.cc: Tweak. + * src/limits_generic.cc: Remove. + * src/gen-num-limits.cc: Remove. + * mknumeric_limits: Remove. + 2001-10-20 Brendan Kehoe <brendan@zen.org> * bits/type_traits.h (_Bool): Removed this type. diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in index 34bae7d9c7e..b67209b8e06 100644 --- a/libstdc++-v3/Makefile.in +++ b/libstdc++-v3/Makefile.in @@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@ CLOCALE_H = @CLOCALE_H@ CMESSAGES_H = @CMESSAGES_H@ CPP = @CPP@ +CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ CSTDIO_H = @CSTDIO_H@ CXX = @CXX@ @@ -106,7 +107,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ -LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ diff --git a/libstdc++-v3/config/cpu/powerpc/bits/limits.h b/libstdc++-v3/config/cpu/alpha/bits/cpu_limits.h index f0ff04dedaa..21d31e3631a 100644 --- a/libstdc++-v3/config/cpu/powerpc/bits/limits.h +++ b/libstdc++-v3/config/cpu/alpha/bits/cpu_limits.h @@ -28,6 +28,11 @@ #ifndef _GLIBCPP_CPU_LIMITS #define _GLIBCPP_CPU_LIMITS 1 +#define __glibcpp_long_bits 64 + #define __glibcpp_long_double_bits 64 #endif + + + diff --git a/libstdc++-v3/config/cpu/cris/bits/limits.h b/libstdc++-v3/config/cpu/cris/bits/cpu_limits.h index f0ff04dedaa..f0ff04dedaa 100644 --- a/libstdc++-v3/config/cpu/cris/bits/limits.h +++ b/libstdc++-v3/config/cpu/cris/bits/cpu_limits.h diff --git a/libstdc++-v3/config/cpu/generic/bits/cpu_limits.h b/libstdc++-v3/config/cpu/generic/bits/cpu_limits.h new file mode 100644 index 00000000000..0438f7c6e9f --- /dev/null +++ b/libstdc++-v3/config/cpu/generic/bits/cpu_limits.h @@ -0,0 +1,41 @@ +// Copyright (C) 2001 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +#ifndef _GLIBCPP_CPU_LIMITS +#define _GLIBCPP_CPU_LIMITS 1 + +// Nothing is defined in the generic file. In that way, we fall back +// on the defaults in std_limits.h. + +// If you need to override these defaults, you can either use a +// CPU-specific version (in which case you must modify +// configure.target) or you must add the overrides to your +// os_defines.h. In general, if all systems for your CPU use the +// same values, it is best to use a cpu-specific configuration file. + +#endif + diff --git a/libstdc++-v3/config/cpu/i386/bits/limits.h b/libstdc++-v3/config/cpu/i386/bits/cpu_limits.h index 31b6eab5d22..be304e2d805 100644 --- a/libstdc++-v3/config/cpu/i386/bits/limits.h +++ b/libstdc++-v3/config/cpu/i386/bits/cpu_limits.h @@ -28,9 +28,6 @@ #ifndef _GLIBCPP_CPU_LIMITS #define _GLIBCPP_CPU_LIMITS 1 -// Some operating systems set this -#ifndef __glibcpp_long_double_bits #define __glibcpp_long_double_bits 80 -#endif #endif diff --git a/libstdc++-v3/config/cpu/m68k/bits/cpu_limits.h b/libstdc++-v3/config/cpu/m68k/bits/cpu_limits.h new file mode 100644 index 00000000000..07e4e03a12b --- /dev/null +++ b/libstdc++-v3/config/cpu/m68k/bits/cpu_limits.h @@ -0,0 +1,35 @@ +// Copyright (C) 2001 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +#ifndef _GLIBCPP_CPU_LIMITS +#define _GLIBCPP_CPU_LIMITS 1 + +#define __glibcpp_long_double_bits 96 + +#endif + + diff --git a/libstdc++-v3/config/cpu/powerpc/bits/cpu_limits.h b/libstdc++-v3/config/cpu/powerpc/bits/cpu_limits.h new file mode 100644 index 00000000000..87d7883bb02 --- /dev/null +++ b/libstdc++-v3/config/cpu/powerpc/bits/cpu_limits.h @@ -0,0 +1,38 @@ +// Copyright (C) 2001 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +#ifndef _GLIBCPP_CPU_LIMITS +#define _GLIBCPP_CPU_LIMITS 1 + +#ifndef __LONG_DOUBLE_128__ +#define __glibcpp_long_double_bits 64 +#endif + +#endif + + + diff --git a/libstdc++-v3/config/cpu/s390/bits/cpu_limits.h b/libstdc++-v3/config/cpu/s390/bits/cpu_limits.h new file mode 100644 index 00000000000..21d31e3631a --- /dev/null +++ b/libstdc++-v3/config/cpu/s390/bits/cpu_limits.h @@ -0,0 +1,38 @@ +// Copyright (C) 2001 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +#ifndef _GLIBCPP_CPU_LIMITS +#define _GLIBCPP_CPU_LIMITS 1 + +#define __glibcpp_long_bits 64 + +#define __glibcpp_long_double_bits 64 + +#endif + + + diff --git a/libstdc++-v3/config/cpu/x86-64/bits/limits.h b/libstdc++-v3/config/cpu/x86-64/bits/cpu_limits.h index 31b6eab5d22..be304e2d805 100644 --- a/libstdc++-v3/config/cpu/x86-64/bits/limits.h +++ b/libstdc++-v3/config/cpu/x86-64/bits/cpu_limits.h @@ -28,9 +28,6 @@ #ifndef _GLIBCPP_CPU_LIMITS #define _GLIBCPP_CPU_LIMITS 1 -// Some operating systems set this -#ifndef __glibcpp_long_double_bits #define __glibcpp_long_double_bits 80 -#endif #endif diff --git a/libstdc++-v3/config/os/aix/bits/os_defines.h b/libstdc++-v3/config/os/aix/bits/os_defines.h index 101a0b26f86..188ced19af3 100644 --- a/libstdc++-v3/config/os/aix/bits/os_defines.h +++ b/libstdc++-v3/config/os/aix/bits/os_defines.h @@ -30,20 +30,20 @@ #ifndef _GLIBCPP_OS_DEFINES #define _GLIBCPP_OS_DEFINES -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. #undef _XOPEN_SOURCE #define _XOPEN_SOURCE 500 #undef _XOPEN_SOURCE_EXTENDED #define _XOPEN_SOURCE_EXTENDED 1 -/* off64_t */ +// off64_t #ifndef _LARGE_FILE_API #define _LARGE_FILE_API #endif -/* atomic types */ +// atomic types #ifndef _ALL_SOURCE #define _ALL_SOURCE #endif @@ -55,10 +55,9 @@ #undef _G_USING_THUNKS #define _G_USING_THUNKS 0 -#define __glibcpp_long_double_bits 64 - #if !defined(_AIX51) || !defined(__64BIT__) #define __glibcpp_wchar_t_bits 16 +#define __glibcpp_wchar_t_is_signed false #endif #ifdef __64BIT__ diff --git a/libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h b/libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h index 3c31f3a1051..9e6bbaf453d 100644 --- a/libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h +++ b/libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h @@ -29,16 +29,13 @@ #ifndef _GLIBCPP_OS_DEFINES -# define _GLIBCPP_OS_DEFINES +#define _GLIBCPP_OS_DEFINES 1 - -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. #define __glibcpp_long_double_bits __glibcpp_double_bits #define _GLIBCPP_AVOID_FSEEK 1 #endif - - diff --git a/libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h b/libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h index 6115e97714b..03f760fdcad 100644 --- a/libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h +++ b/libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h @@ -27,21 +27,12 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - #ifndef _GLIBCPP_OS_DEFINES -# define _GLIBCPP_OS_DEFINES - - -/* Settings for NetBSD. */ +#define _GLIBCPP_OS_DEFINES 1 -/* __off_t is a typedef declared in stdio.h. */ -/* #define __off_t off_t */ - -/* We don't have off64_t */ -/* #define __off64_t off64_t */ +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. #define __ssize_t ssize_t #endif - - diff --git a/libstdc++-v3/config/os/djgpp/bits/os_defines.h b/libstdc++-v3/config/os/djgpp/bits/os_defines.h index f979b1eb60d..ce0bf243b0e 100644 --- a/libstdc++-v3/config/os/djgpp/bits/os_defines.h +++ b/libstdc++-v3/config/os/djgpp/bits/os_defines.h @@ -29,11 +29,10 @@ #ifndef _GLIBCPP_OS_DEFINES -#define _GLIBCPP_OS_DEFINES +#define _GLIBCPP_OS_DEFINES 1 - -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. #define __off_t off_t #define __off64_t off64_t @@ -42,3 +41,5 @@ // FIXME: should there be '#undef POSIX_SOURCE'? #endif + + diff --git a/libstdc++-v3/config/os/generic/bits/os_defines.h b/libstdc++-v3/config/os/generic/bits/os_defines.h index b3984f39a1c..143c07e6803 100644 --- a/libstdc++-v3/config/os/generic/bits/os_defines.h +++ b/libstdc++-v3/config/os/generic/bits/os_defines.h @@ -29,13 +29,9 @@ #ifndef _GLIBCPP_OS_DEFINES -# define _GLIBCPP_OS_DEFINES +#define _GLIBCPP_OS_DEFINES 1 // System-specific #define, typedefs, corrections, etc, go here. This // file will come before all others. -#ifdef __alpha__ -#define __glibcpp_long_bits 64 -#endif - #endif diff --git a/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h b/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h index 2b4375e81eb..f5612ed060b 100644 --- a/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h +++ b/libstdc++-v3/config/os/gnu-linux/bits/os_defines.h @@ -27,10 +27,12 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - #ifndef _GLIBCPP_OS_DEFINES #define _GLIBCPP_OS_DEFINES 1 +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + // This keeps isanum, et al from being propagated as macros. #define __NO_CTYPE 1 @@ -63,21 +65,12 @@ typedef __loff_t __off64_t; # define __NO_STRING_INLINES # endif -#if defined (__powerpc__) || defined (__s390__) -#define __glibcpp_wchar_t_is_signed true -#endif - -#if defined (__alpha__) || defined (__powerpc64__) || (defined (__sparc__) && defined(__arch64__)) || defined (__s390x__) +#if defined(__sparc__) && defined(__arch64__) #define __glibcpp_long_bits 64 #endif -#if defined (__alpha__) || (defined (__powerpc__) && !defined (__LONG_DOUBLE_128__)) || defined (__s390__) -#define __glibcpp_long_double_bits 64 -#endif - -#if defined (__mc68000__) -#define __glibcpp_long_double_bits 96 +#ifdef __powerpc64__ +#define __glibcpp_long_bits 64 #endif #endif - diff --git a/libstdc++-v3/config/os/hpux/bits/os_defines.h b/libstdc++-v3/config/os/hpux/bits/os_defines.h index 45f000f96b5..d7045d0a16e 100644 --- a/libstdc++-v3/config/os/hpux/bits/os_defines.h +++ b/libstdc++-v3/config/os/hpux/bits/os_defines.h @@ -27,13 +27,11 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - #ifndef _GLIBCPP_OS_DEFINES -# define _GLIBCPP_OS_DEFINES - +#define _GLIBCPP_OS_DEFINES -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. #define __off_t off_t #define __off64_t off64_t @@ -46,4 +44,3 @@ #endif #endif - diff --git a/libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h b/libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h index b4e2a1f3637..50db680b08f 100644 --- a/libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h +++ b/libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h @@ -27,32 +27,28 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - #ifndef _GLIBCPP_OS_DEFINES -#define _GLIBCPP_OS_DEFINES - -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ - -/* We need large file support. There are two ways to turn it on: - by defining either _LARGEFILE64_SOURCE or _SGI_SOURCE. However, - it does not actually work to define only the former, as then - <sys/stat.h> is invalid: `st_blocks' is defined to be a macro, - but then used as a field name. So, we have to turn on - _SGI_SOURCE. That only works if _POSIX_SOURCE is turned off, - so we have to explicitly turn it off. (Some of the libio C files - explicitly try to turn it on.) _SGI_SOURCE is actually turned on - implicitly via the command-line. */ +#define _GLIBCPP_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +// We need large file support. There are two ways to turn it on: by +// defining either _LARGEFILE64_SOURCE or _SGI_SOURCE. However, it +// does not actually work to define only the former, as then +// <sys/stat.h> is invalid: `st_blocks' is defined to be a macro, but +// then used as a field name. So, we have to turn on _SGI_SOURCE. +// That only works if _POSIX_SOURCE is turned off, so we have to +// explicitly turn it off. (Some of the libio C files explicitly try +// to turn it on.) _SGI_SOURCE is actually turned on implicitly via +// the command-line. #undef _POSIX_SOURCE #define __off_t off_t #define __off64_t off64_t #define __ssize_t ssize_t -/* GCC does not use thunks on IRIX. */ +// GCC does not use thunks on IRIX. #define _G_USING_THUNKS 0 #endif - - - diff --git a/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h b/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h index e5fa694a643..e8f1dcc82d2 100644 --- a/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h +++ b/libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h @@ -27,29 +27,28 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - #ifndef _GLIBCPP_OS_DEFINES -#define _GLIBCPP_OS_DEFINES - -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ - -/* We need large file support. There are two ways to turn it on: - by defining either _LARGEFILE64_SOURCE or _SGI_SOURCE. However, - it does not actually work to define only the former, as then - <sys/stat.h> is invalid: `st_blocks' is defined to be a macro, - but then used as a field name. So, we have to turn on - _SGI_SOURCE. That only works if _POSIX_SOURCE is turned off, - so we have to explicitly turn it off. (Some of the libio C files - explicitly try to turn it on.) _SGI_SOURCE is actually turned on - implicitly via the command-line. */ +#define _GLIBCPP_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +// We need large file support. There are two ways to turn it on: by +// defining either _LARGEFILE64_SOURCE or _SGI_SOURCE. However, it +// does not actually work to define only the former, as then +// <sys/stat.h> is invalid: `st_blocks' is defined to be a macro, but +// then used as a field name. So, we have to turn on _SGI_SOURCE. +// That only works if _POSIX_SOURCE is turned off, so we have to +// explicitly turn it off. (Some of the libio C files explicitly try +// to turn it on.) _SGI_SOURCE is actually turned on implicitly via +// the command-line. #undef _POSIX_SOURCE #define __off_t off_t #define __off64_t off64_t #define __ssize_t ssize_t -/* GCC does not use thunks on IRIX. */ +// GCC does not use thunks on IRIX. #define _G_USING_THUNKS 0 #define __glibcpp_long_double_bits 64 diff --git a/libstdc++-v3/config/os/newlib/bits/os_defines.h b/libstdc++-v3/config/os/newlib/bits/os_defines.h index ba40cee3975..12776611b88 100644 --- a/libstdc++-v3/config/os/newlib/bits/os_defines.h +++ b/libstdc++-v3/config/os/newlib/bits/os_defines.h @@ -27,15 +27,10 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - #ifndef _GLIBCPP_OS_DEFINES -# define _GLIBCPP_OS_DEFINES - - -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ +#define _GLIBCPP_OS_DEFINES 1 +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. #endif - - diff --git a/libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h index 5a756b4210d..0edc784c9e1 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h +++ b/libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h @@ -27,12 +27,11 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - #ifndef _GLIBCPP_OS_DEFINES -# define _GLIBCPP_OS_DEFINES +#define _GLIBCPP_OS_DEFINES 1 -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. #define _GLIBCPP_AVOID_FSEEK 1 diff --git a/libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h index 961e29d55d0..3acdf5c002a 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h +++ b/libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h @@ -27,12 +27,11 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - #ifndef _GLIBCPP_OS_DEFINES -# define _GLIBCPP_OS_DEFINES +#define _GLIBCPP_OS_DEFINES 1 -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. #define _GLIBCPP_AVOID_FSEEK 1 diff --git a/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h index 67dae7a7770..a0fd24309ff 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h +++ b/libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h @@ -27,12 +27,11 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. - #ifndef _GLIBCPP_OS_DEFINES -# define _GLIBCPP_OS_DEFINES +#define _GLIBCPP_OS_DEFINES 1 -/* System-specific #define, typedefs, corrections, etc, go here. This - file will come before all others. */ +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. #define _GLIBCPP_AVOID_FSEEK 1 diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index fcbd6f21c75..d156ac5b41c 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -16883,8 +16883,8 @@ fi #line 16884 "configure" #include "confdefs.h" -#include <setjmp.h> - + #include <setjmp.h> + int main() { sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1); ; return 0; } @@ -16895,6 +16895,7 @@ if { (eval echo configure:16893: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; #define HAVE_SIGSETJMP 1 EOF + else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 @@ -16905,17 +16906,17 @@ rm -f conftest* do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:16909: checking for $ac_hdr" >&5 +echo "configure:16910: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 16914 "configure" +#line 16915 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16920: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -16944,12 +16945,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16948: checking for $ac_func" >&5 +echo "configure:16949: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 16953 "configure" +#line 16954 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -16972,7 +16973,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:16976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -16997,7 +16998,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:17001: checking for working mmap" >&5 +echo "configure:17002: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -17005,7 +17006,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <<EOF -#line 17009 "configure" +#line 17010 "configure" #include "confdefs.h" /* Thanks to Mike Haertel and Jim Avera for this test. @@ -17158,7 +17159,7 @@ main() } EOF -if { (eval echo configure:17162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:17163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -17189,17 +17190,17 @@ fi do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:17193: checking for $ac_hdr" >&5 +echo "configure:17194: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 17198 "configure" +#line 17199 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:17203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:17204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -17232,7 +17233,7 @@ done # Can't do these in a loop, else the resulting syntax is wrong. cat > conftest.$ac_ext <<EOF -#line 17236 "configure" +#line 17237 "configure" #include "confdefs.h" #include <sys/resource.h> #include <unistd.h> @@ -17241,7 +17242,7 @@ int main() { int f = RLIMIT_DATA ; ; return 0; } EOF -if { (eval echo configure:17245: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_mresult=1 else @@ -17258,7 +17259,7 @@ EOF cat > conftest.$ac_ext <<EOF -#line 17262 "configure" +#line 17263 "configure" #include "confdefs.h" #include <sys/resource.h> #include <unistd.h> @@ -17267,7 +17268,7 @@ int main() { int f = RLIMIT_RSS ; ; return 0; } EOF -if { (eval echo configure:17271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_mresult=1 else @@ -17284,7 +17285,7 @@ EOF cat > conftest.$ac_ext <<EOF -#line 17288 "configure" +#line 17289 "configure" #include "confdefs.h" #include <sys/resource.h> #include <unistd.h> @@ -17293,7 +17294,7 @@ int main() { int f = RLIMIT_VMEM ; ; return 0; } EOF -if { (eval echo configure:17297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17298: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_mresult=1 else @@ -17310,7 +17311,7 @@ EOF cat > conftest.$ac_ext <<EOF -#line 17314 "configure" +#line 17315 "configure" #include "confdefs.h" #include <sys/resource.h> #include <unistd.h> @@ -17319,7 +17320,7 @@ int main() { int f = RLIMIT_AS ; ; return 0; } EOF -if { (eval echo configure:17323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17324: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* glibcpp_mresult=1 else @@ -17341,7 +17342,7 @@ EOF else cat > conftest.$ac_ext <<EOF -#line 17345 "configure" +#line 17346 "configure" #include "confdefs.h" #include <sys/resource.h> #include <unistd.h> @@ -17350,7 +17351,7 @@ int main() { struct rlimit r; setrlimit(0, &r); ; return 0; } EOF -if { (eval echo configure:17354: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:17355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_setrlimit=yes else @@ -17366,7 +17367,7 @@ fi fi echo $ac_n "checking for testsuite memory limit support""... $ac_c" 1>&6 -echo "configure:17370: checking for testsuite memory limit support" >&5 +echo "configure:17371: checking for testsuite memory limit support" >&5 if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then ac_mem_limits=yes cat >> confdefs.h <<\EOF @@ -17385,7 +17386,7 @@ fi # Propagate the target-specific source directories through the build chain. OS_INC_SRCDIR=$os_include_dir/bits ATOMICITY_INC_SRCDIR=$ATOMICITYH/bits -LIMITS_INC_SRCDIR=$LIMITSH/bits +CPU_LIMITS_INC_SRCDIR=$CPULIMITSH/bits @@ -17468,13 +17469,13 @@ glibcpp_toolexeclibdir=no glibcpp_prefixdir=${prefix} echo $ac_n "checking for interface version number""... $ac_c" 1>&6 -echo "configure:17472: checking for interface version number" >&5 +echo "configure:17473: checking for interface version number" >&5 libstdcxx_interface=$INTERFACE echo "$ac_t""$libstdcxx_interface" 1>&6 # Process the option --with-gxx-include-dir=<path to include-files directory> echo $ac_n "checking for --with-gxx-include-dir""... $ac_c" 1>&6 -echo "configure:17478: checking for --with-gxx-include-dir" >&5 +echo "configure:17479: checking for --with-gxx-include-dir" >&5 # Check whether --with-gxx-include-dir or --without-gxx-include-dir was given. if test "${with_gxx_include_dir+set}" = set; then withval="$with_gxx_include_dir" @@ -17498,7 +17499,7 @@ echo "$ac_t""$gxx_include_dir" 1>&6 # Process the option "--enable-version-specific-runtime-libs" echo $ac_n "checking for --enable-version-specific-runtime-libs""... $ac_c" 1>&6 -echo "configure:17502: checking for --enable-version-specific-runtime-libs" >&5 +echo "configure:17503: checking for --enable-version-specific-runtime-libs" >&5 # Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given. if test "${enable_version_specific_runtime_libs+set}" = set; then enableval="$enable_version_specific_runtime_libs" @@ -17545,7 +17546,7 @@ if test x"$glibcpp_toolexecdir" = x"no"; then fi echo $ac_n "checking for install location""... $ac_c" 1>&6 -echo "configure:17549: checking for install location" >&5 +echo "configure:17550: checking for install location" >&5 echo "$ac_t""$gxx_include_dir" 1>&6 @@ -17822,7 +17823,7 @@ s%@USE_COMPLEX_LONG_DOUBLE@%$USE_COMPLEX_LONG_DOUBLE%g s%@WERROR@%$WERROR%g s%@OS_INC_SRCDIR@%$OS_INC_SRCDIR%g s%@ATOMICITY_INC_SRCDIR@%$ATOMICITY_INC_SRCDIR%g -s%@LIMITS_INC_SRCDIR@%$LIMITS_INC_SRCDIR%g +s%@CPU_LIMITS_INC_SRCDIR@%$CPU_LIMITS_INC_SRCDIR%g s%@GLIBCPP_IS_CROSS_COMPILING@%$GLIBCPP_IS_CROSS_COMPILING%g s%@CANADIAN_TRUE@%$CANADIAN_TRUE%g s%@CANADIAN_FALSE@%$CANADIAN_FALSE%g diff --git a/libstdc++-v3/configure.in b/libstdc++-v3/configure.in index ebf969ff830..ea92942f1ad 100644 --- a/libstdc++-v3/configure.in +++ b/libstdc++-v3/configure.in @@ -225,9 +225,10 @@ else AC_LC_MESSAGES AC_TRY_COMPILE([ -#include <setjmp.h> -], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);], -[AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])]) + #include <setjmp.h> + ], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);], + [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ]) + ]) AC_FUNC_MMAP @@ -239,10 +240,10 @@ fi # Propagate the target-specific source directories through the build chain. OS_INC_SRCDIR=$os_include_dir/bits ATOMICITY_INC_SRCDIR=$ATOMICITYH/bits -LIMITS_INC_SRCDIR=$LIMITSH/bits +CPU_LIMITS_INC_SRCDIR=$CPULIMITSH/bits AC_SUBST(OS_INC_SRCDIR) AC_SUBST(ATOMICITY_INC_SRCDIR) -AC_SUBST(LIMITS_INC_SRCDIR) +AC_SUBST(CPU_LIMITS_INC_SRCDIR) # Set up cross-compile flags AC_SUBST(GLIBCPP_IS_CROSS_COMPILING) diff --git a/libstdc++-v3/configure.target b/libstdc++-v3/configure.target index 61f331e31ea..304457dfb17 100644 --- a/libstdc++-v3/configure.target +++ b/libstdc++-v3/configure.target @@ -13,7 +13,6 @@ # target The configuration target # target_cpu The configuration target CPU # target_os The configuration target OS -# target_optspace --enable-target-optspace ("yes", "no", "") # It possibly modifies the following shell variables: # cpu_include_dir CPU-specific include directory, relative to srcdir @@ -22,7 +21,6 @@ # Set any CPU dependent compiler flags. # THIS TABLE IS SORTED. KEEP IT THAT WAY. - case "${target_cpu}" in alpha*) cpu_include_dir="config/cpu/alpha" @@ -68,7 +66,6 @@ esac # Set any OS dependent compiler flags. # THIS TABLE IS SORTED. KEEP IT THAT WAY. - case "${target_os}" in aix4.[3456789]* | aix[56789]*) os_include_dir="config/os/aix" @@ -115,7 +112,6 @@ esac # Set any flags dependant on the full target triplet. # THIS TABLE IS SORTED. KEEP IT THAT WAY. - case "${target}" in *-*-aix[456789]*) # We set os_include_dir to config/os/aix only on AIX 4.3 and @@ -135,24 +131,32 @@ case "${target}" in ;; esac -# Set LIMITSH to the directory where the configuration-dependent -# limits.h can be found. +# Set CPULIMITSH to the directory where the configuration-dependent +# cpu_limits.h can be found. # THIS TABLE IS SORTED. KEEP IT THAT WAY. - case "${target}" in + alpha-*-*) + CPULIMITSH=config/cpu/alpha + ;; cris-*-*) - LIMITSH=config/cpu/cris + CPULIMITSH=config/cpu/cris ;; i?86-*-*) - LIMITSH=config/cpu/i386 + CPULIMITSH=config/cpu/i386 + ;; + m68k-*-* | m680[246]0-*-*) + CPULIMITSH=config/cpu/m68k ;; powerpc-*-*) - LIMITSH=config/cpu/powerpc + CPULIMITSH=config/cpu/powerpc + ;; + s390-*-* | s390x-*-*) + CPULIMITSH=config/cpu/s390 ;; x86_64-*-*) - LIMITSH=config/cpu/x86-64 + CPULIMITSH=config/cpu/x86-64 ;; *) - LIMITSH=config/cpu/generic + CPULIMITSH=config/cpu/generic ;; esac diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index da0bad83d7c..383e3917e02 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -263,7 +263,7 @@ target_headers = \ ${target_srcdir}/ctype_noninline.h \ ${target_srcdir}/os_defines.h \ ${glibcpp_srcdir}/@ATOMICITY_INC_SRCDIR@/atomicity.h \ - ${glibcpp_srcdir}/@LIMITS_INC_SRCDIR@/limits.h + ${glibcpp_srcdir}/@CPU_LIMITS_INC_SRCDIR@/cpu_limits.h thread_builddir = ./${target_alias}/bits thread_headers = \ diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index a7cca4cd966..f16780f2472 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@ CLOCALE_H = @CLOCALE_H@ CMESSAGES_H = @CMESSAGES_H@ CPP = @CPP@ +CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ CSTDIO_H = @CSTDIO_H@ CXXCPP = @CXXCPP@ @@ -105,7 +106,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ -LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -393,7 +393,7 @@ target_headers = \ ${target_srcdir}/ctype_noninline.h \ ${target_srcdir}/os_defines.h \ ${glibcpp_srcdir}/@ATOMICITY_INC_SRCDIR@/atomicity.h \ - ${glibcpp_srcdir}/@LIMITS_INC_SRCDIR@/limits.h + ${glibcpp_srcdir}/@CPU_LIMITS_INC_SRCDIR@/cpu_limits.h thread_builddir = ./${target_alias}/bits diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index dacc31b4dec..c7ee1875a94 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -32,8 +32,6 @@ // Pick up any OS-specific definitions. #include <bits/os_defines.h> -// And any CPU-specific definitions. -#include <bits/limits.h> // The current version of the C++ library in compressed ISO date format. #define __GLIBCPP__ 20011023 @@ -51,10 +49,6 @@ // by the compiler, but instead instantiated into the library binary. #define _GLIBCPP_FULLY_COMPLIANT_HEADERS 1 -// Define this to permit user-level control of the expansion of string -// buffers (via a fn pointer), see basic_string.* for more. -//#define _GLIBCPP_ALLOC_CONTROL - // To enable older, ARM-style iostreams and other anachronisms use this. //#define _GLIBCPP_DEPRECATED 1 @@ -64,6 +58,10 @@ // Enable concept checking code from the boost libraries. //#define _GLIBCPP_CONCEPT_CHECKS 1 +// Define this to permit user-level control of the expansion of string +// buffers (via a fn pointer), see basic_string.* for more. +//#define _GLIBCPP_ALLOC_CONTROL + // Map gthr.h abstraction to that required for STL. Do not key off of // __GTHREADS at this point since we haven't seen the correct symbol // yet, instead setup so that include/bits/stl_threads.h will know to diff --git a/libstdc++-v3/include/bits/limits_generic.h b/libstdc++-v3/include/bits/limits_generic.h deleted file mode 100644 index a5dd2996310..00000000000 --- a/libstdc++-v3/include/bits/limits_generic.h +++ /dev/null @@ -1,828 +0,0 @@ -// The template and inlines for the -*- C++ -*- numeric_limits classes. - -// Copyright (C) 2000-2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. - -// Note: this is not a conforming implementation. -// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr> - -// -// ISO 14882:1998 -// 18.2.1 -// - -/** @file limits_generic.h - * ISO 14882:1998 - * 18.2.1 - */ - -#ifndef _CPP_NUMERIC_LIMITS -#define _CPP_NUMERIC_LIMITS 1 - -#pragma GCC system_header - -#include <bits/c++config.h> -#include <bits/std_cfloat.h> -#include <bits/std_climits.h> -#if defined( _GLIBCPP_USE_WCHAR_T) -#include <bits/std_cwchar.h> -#endif - -namespace std { - - /// Rounding style determines the behavior of floating-point calculations. - enum float_round_style { - round_indeterminate = -1, - round_toward_zero = 0, - round_to_nearest = 1, - round_toward_infinity = 2, - round_toward_neg_infinity = 3 - }; - - /// This enum signals whether a type has denormalization. - enum float_denorm_style { - denorm_indeterminate = -1, - denorm_absent = 0, - denorm_present = 1 - }; - - /** - * [18.2.1]/1: "The numeric_limits component provides a C++ program - * with information about various properties of the implementation's - * representation of the fundamental types." All of the standard - * fundamental types have specializations of this class template. - * @brief Properties of fundamental types on a per-platform basis. - */ - template<typename _T> struct numeric_limits { - static const bool is_specialized = false; - - static _T min() throw() { return static_cast<_T>(0); } - static _T max() throw() { return static_cast<_T>(0); } - - static const int digits = 0; - static const int digits10 = 0; - static const bool is_signed = false; - static const bool is_integer = false; - static const bool is_exact = false; - static const int radix = 0; - - static _T epsilon() throw() { return static_cast<_T>(0); } - static _T round_error() throw() { return static_cast<_T>(0); } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static _T infinity() throw() { return static_cast<_T>(0); } - static _T quiet_NaN() throw() { return static_cast<_T>(0); } - static _T signaling_NaN() throw() { return static_cast<_T>(0); } - static _T denorm_min() throw() { return static_cast<_T>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = false; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<typename _T> _T __limits_infinity(); - template<typename _T> _T __limits_quiet_NaN(); - template<typename _T> _T __limits_signaling_NaN(); - template<typename _T> _T __limits_denorm_min(); - - template<> struct numeric_limits<bool> { - static const bool is_specialized = true; - - static bool min() throw() - { return false; } - static bool max() throw() - { return true; } - - static const int digits = 1; - static const int digits10 = 0; - static const bool is_signed = false; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static bool epsilon() throw() - { return 0; } - static bool round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static bool infinity() throw() - { return static_cast<bool>(0); } - static bool quiet_NaN() throw() - { return static_cast<bool>(0); } - static bool signaling_NaN() throw() - { return static_cast<bool>(0); } - static bool denorm_min() throw() - { return static_cast<bool>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<char> { - static const bool is_specialized = true; - - static char min() throw() - { return CHAR_MIN; } - static char max() throw() - { return CHAR_MAX; } - - static const int digits = 7; - static const int digits10 = 2; - static const bool is_signed = true; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static char epsilon() throw() - { return 0; } - static char round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static char infinity() throw() - { return static_cast<char>(0); } - static char quiet_NaN() throw() - { return static_cast<char>(0); } - static char signaling_NaN() throw() - { return static_cast<char>(0); } - static char denorm_min() throw() - { return static_cast<char>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<signed char> { - static const bool is_specialized = true; - - static signed char min() throw() - { return SCHAR_MIN; } - static signed char max() throw() - { return SCHAR_MAX; } - - static const int digits = 7; - static const int digits10 = 2; - static const bool is_signed = true; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static signed char epsilon() throw() - { return 0; } - static signed char round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static signed char infinity() throw() - { return static_cast<signed char>(0); } - static signed char quiet_NaN() throw() - { return static_cast<signed char>(0); } - static signed char signaling_NaN() throw() - { return static_cast<signed char>(0); } - static signed char denorm_min() throw() - { return static_cast<signed char>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<unsigned char> { - static const bool is_specialized = true; - - static unsigned char min() throw() - { return 0; } - static unsigned char max() throw() - { return UCHAR_MAX; } - - static const int digits = 8; - static const int digits10 = 2; - static const bool is_signed = false; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static unsigned char epsilon() throw() - { return 0; } - static unsigned char round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static unsigned char infinity() throw() - { return static_cast<unsigned char>(0); } - static unsigned char quiet_NaN() throw() - { return static_cast<unsigned char>(0); } - static unsigned char signaling_NaN() throw() - { return static_cast<unsigned char>(0); } - static unsigned char denorm_min() throw() - { return static_cast<unsigned char>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = true; - - static const bool traps = true; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - -#if defined( _GLIBCPP_USE_WCHAR_T) - template<> struct numeric_limits<wchar_t> { - static const bool is_specialized = true; - - static wchar_t min() throw() - { return WCHAR_MIN; } - static wchar_t max() throw() - { return WCHAR_MAX; } - - static const int digits = 31; - static const int digits10 = 9; - static const bool is_signed = true; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static wchar_t epsilon() throw() - { return 0; } - static wchar_t round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static wchar_t infinity() throw() - { return static_cast<wchar_t>(0); } - static wchar_t quiet_NaN() throw() - { return static_cast<wchar_t>(0); } - static wchar_t signaling_NaN() throw() - { return static_cast<wchar_t>(0); } - static wchar_t denorm_min() throw() - { return static_cast<wchar_t>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; -#endif - - template<> struct numeric_limits<short> { - static const bool is_specialized = true; - - static short min() throw() - { return SHRT_MIN; } - static short max() throw() - { return SHRT_MAX; } - - static const int digits = 15; - static const int digits10 = 4; - static const bool is_signed = true; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static short epsilon() throw() - { return 0; } - static short round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static short infinity() throw() - { return static_cast<short>(0); } - static short quiet_NaN() throw() - { return static_cast<short>(0); } - static short signaling_NaN() throw() - { return static_cast<short>(0); } - static short denorm_min() throw() - { return static_cast<short>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<unsigned short> { - static const bool is_specialized = true; - - static unsigned short min() throw() - { return 0; } - static unsigned short max() throw() - { return USHRT_MAX; } - - static const int digits = 16; - static const int digits10 = 4; - static const bool is_signed = false; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static unsigned short epsilon() throw() - { return 0; } - static unsigned short round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static unsigned short infinity() throw() - { return static_cast<unsigned short>(0); } - static unsigned short quiet_NaN() throw() - { return static_cast<unsigned short>(0); } - static unsigned short signaling_NaN() throw() - { return static_cast<unsigned short>(0); } - static unsigned short denorm_min() throw() - { return static_cast<unsigned short>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = true; - - static const bool traps = true; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<int> { - static const bool is_specialized = true; - - static int min() throw() - { return INT_MIN; } - static int max() throw() - { return INT_MAX; } - -#if INT_MAX > 32767 - static const int digits = 31; - static const int digits10 = 9; -#else - static const int digits = 15; - static const int digits10 = 4; -#endif - static const bool is_signed = true; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static int epsilon() throw() - { return 0; } - static int round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static int infinity() throw() - { return static_cast<int>(0); } - static int quiet_NaN() throw() - { return static_cast<int>(0); } - static int signaling_NaN() throw() - { return static_cast<int>(0); } - static int denorm_min() throw() - { return static_cast<int>(0); } - - static const bool is_iec559 = true; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<unsigned int> { - static const bool is_specialized = true; - - static unsigned int min() throw() - { return 0; } - static unsigned int max() throw() - { return UINT_MAX; } - -#if INT_MAX > 32767 - static const int digits = 32; - static const int digits10 = 9; -#else - static const int digits = 16; - static const int digits10 = 4; -#endif - static const bool is_signed = false; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static unsigned int epsilon() throw() - { return 0; } - static unsigned int round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static unsigned int infinity() throw() - { return static_cast<unsigned int>(0); } - static unsigned int quiet_NaN() throw() - { return static_cast<unsigned int>(0); } - static unsigned int signaling_NaN() throw() - { return static_cast<unsigned int>(0); } - static unsigned int denorm_min() throw() - { return static_cast<unsigned int>(0); } - - static const bool is_iec559 = true; - static const bool is_bounded = true; - static const bool is_modulo = true; - - static const bool traps = true; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<long> { - static const bool is_specialized = true; - - static long min() throw() - { return LONG_MIN; } - static long max() throw() - { return LONG_MAX; } - -#if LONG_MAX > 2147483647 - static const int digits = 63; - static const int digits10 = 18; -#elif LONG_MAX > 32767 - static const int digits = 31; - static const int digits10 = 9; -#else - static const int digits = 15; - static const int digits10 = 4; -#endif - static const bool is_signed = true; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static long epsilon() throw() - { return 0; } - static long round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static long infinity() throw() - { return static_cast<long>(0); } - static long quiet_NaN() throw() - { return static_cast<long>(0); } - static long signaling_NaN() throw() - { return static_cast<long>(0); } - static long denorm_min() throw() - { return static_cast<long>(0); } - - static const bool is_iec559 = true; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<unsigned long> { - static const bool is_specialized = true; - - static unsigned long min() throw() - { return 0; } - static unsigned long max() throw() - { return ULONG_MAX; } - -#if LONG_MAX > 2147483647 - static const int digits = 64; - static const int digits10 = 19; -#elif LONG_MAX > 32767 - static const int digits = 32; - static const int digits10 = 9; -#else - static const int digits = 16; - static const int digits10 = 4; -#endif - static const bool is_signed = false; - static const bool is_integer = true; - static const bool is_exact = true; - static const int radix = 2; - static unsigned long epsilon() throw() - { return 0; } - static unsigned long round_error() throw() - { return 0; } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static unsigned long infinity() throw() - { return static_cast<unsigned long>(0); } - static unsigned long quiet_NaN() throw() - { return static_cast<unsigned long>(0); } - static unsigned long signaling_NaN() throw() - { return static_cast<unsigned long>(0); } - static unsigned long denorm_min() throw() - { return static_cast<unsigned long>(0); } - - static const bool is_iec559 = true; - static const bool is_bounded = true; - static const bool is_modulo = true; - - static const bool traps = true; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<float> { - static const bool is_specialized = true; - - static float min() throw() - { return FLT_MIN; } - static float max() throw() - { return FLT_MAX; } - - static const int digits = FLT_MANT_DIG; - static const int digits10 = FLT_DIG; - static const bool is_signed = true; - static const bool is_integer = false; - static const bool is_exact = false; - static const int radix = FLT_RADIX; - static float epsilon() throw() - { return FLT_EPSILON; } - static float round_error() throw() - { return FLT_ROUNDS; } - - static const int min_exponent = FLT_MIN_EXP; - static const int min_exponent10 = FLT_MIN_10_EXP; - static const int max_exponent = FLT_MAX_EXP; - static const int max_exponent10 = FLT_MAX_10_EXP; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static float infinity() throw() - { return static_cast<float>(0); } - static float quiet_NaN() throw() - { return static_cast<float>(0); } - static float signaling_NaN() throw() - { return static_cast<float>(0); } - static float denorm_min() throw() - { return static_cast<float>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<double> { - static const bool is_specialized = true; - - static double min() throw() - { return DBL_MIN; } - static double max() throw() - { return DBL_MAX; } - - static const int digits = DBL_MANT_DIG; - static const int digits10 = DBL_DIG; - static const bool is_signed = true; - static const bool is_integer = false; - static const bool is_exact = false; - static const int radix = 2; - static double epsilon() throw() - { return DBL_EPSILON; } - static double round_error() throw() - { return 1.0; } - - static const int min_exponent = DBL_MIN_EXP; - static const int min_exponent10 = DBL_MIN_10_EXP; - static const int max_exponent = DBL_MAX_EXP; - static const int max_exponent10 = DBL_MAX_10_EXP; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static double infinity() throw() - { return static_cast<double>(0); } - static double quiet_NaN() throw() - { return static_cast<double>(0); } - static double signaling_NaN() throw() - { return static_cast<double>(0); } - static double denorm_min() throw() - { return static_cast<double>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<> struct numeric_limits<long double> { - static const bool is_specialized = true; - - static double min() throw() - { return LDBL_MIN; } - static double max() throw() - { return LDBL_MAX; } - - static const int digits = LDBL_MANT_DIG; - static const int digits10 = LDBL_DIG; - static const bool is_signed = true; - static const bool is_integer = false; - static const bool is_exact = false; - static const int radix = 2; - static double epsilon() throw() - { return LDBL_EPSILON; } - static double round_error() throw() - { return 1.0L; } - - static const int min_exponent = LDBL_MIN_EXP; - static const int min_exponent10 = LDBL_MIN_10_EXP; - static const int max_exponent = LDBL_MAX_EXP; - static const int max_exponent10 = LDBL_MAX_10_EXP; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static double infinity() throw() - { return static_cast<double>(0); } - static double quiet_NaN() throw() - { return static_cast<double>(0); } - static double signaling_NaN() throw() - { return static_cast<double>(0); } - static double denorm_min() throw() - { return static_cast<double>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = true; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - -} // namespace std - -#endif // _CPP_NUMERIC_LIMITS diff --git a/libstdc++-v3/include/bits/std_limits.h b/libstdc++-v3/include/bits/std_limits.h index d0f0479ca03..3fca4dcd033 100644 --- a/libstdc++-v3/include/bits/std_limits.h +++ b/libstdc++-v3/include/bits/std_limits.h @@ -40,6 +40,7 @@ #pragma GCC system_header +#include <bits/cpu_limits.h> #include <bits/c++config.h> // @@ -95,7 +96,7 @@ #define __glibcpp_wchar_t_bits 32 #endif #ifndef __glibcpp_wchar_t_is_signed -#define __glibcpp_wchar_t_is_signed __glibcpp_plain_char_is_signed +#define __glibcpp_wchar_t_is_signed false #endif #ifdef _GLIBCPP_USE_LONG_LONG #ifndef __glibcpp_long_long_bits @@ -1139,7 +1140,7 @@ namespace std template<> - struct numeric_limits<signed char> + struct numeric_limits<signed char> { static const bool is_specialized = true; @@ -1960,8 +1961,8 @@ namespace std static const bool traps = __glibcpp_long_double_traps; static const bool tinyness_before = __glibcpp_long_double_tinyness_before; - static const float_round_style round_style = - __glibcpp_long_double_round_style; + static const float_round_style round_style = + __glibcpp_long_double_round_style; }; #undef __glibcpp_long_double_min diff --git a/libstdc++-v3/libio/Makefile.in b/libstdc++-v3/libio/Makefile.in index f01d6106020..4d244f278e5 100644 --- a/libstdc++-v3/libio/Makefile.in +++ b/libstdc++-v3/libio/Makefile.in @@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@ CLOCALE_H = @CLOCALE_H@ CMESSAGES_H = @CMESSAGES_H@ CPP = @CPP@ +CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ CSTDIO_H = @CSTDIO_H@ CXX = @CXX@ @@ -104,7 +105,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ -LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ diff --git a/libstdc++-v3/libmath/Makefile.in b/libstdc++-v3/libmath/Makefile.in index 337c0d316ed..74a41f13519 100644 --- a/libstdc++-v3/libmath/Makefile.in +++ b/libstdc++-v3/libmath/Makefile.in @@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@ CLOCALE_H = @CLOCALE_H@ CMESSAGES_H = @CMESSAGES_H@ CPP = @CPP@ +CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ CSTDIO_H = @CSTDIO_H@ CXX = @CXX@ @@ -106,7 +107,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ -LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in index b9c55cc78d3..5d5fe78c4a1 100644 --- a/libstdc++-v3/libsupc++/Makefile.in +++ b/libstdc++-v3/libsupc++/Makefile.in @@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@ CLOCALE_H = @CLOCALE_H@ CMESSAGES_H = @CMESSAGES_H@ CPP = @CPP@ +CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ CSTDIO_H = @CSTDIO_H@ CXXCPP = @CXXCPP@ @@ -103,7 +104,6 @@ LIBMATHOBJS = @LIBMATHOBJS@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ -LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ diff --git a/libstdc++-v3/mknumeric_limits b/libstdc++-v3/mknumeric_limits deleted file mode 100755 index cb334635113..00000000000 --- a/libstdc++-v3/mknumeric_limits +++ /dev/null @@ -1,367 +0,0 @@ -#! /bin/sh - -# mknumeric_limits: generates -# - part of bits/std_limits.h completed by gen-num-limits.cc -# - src/limitsMEMBERS.cc that contains the definition of various -# static data members of specialization of class template numeric_limits -# - -echo "running mknumeric_limits" - -BUILD_DIR=$1 -if [ ! -d "$BUILD_DIR" ]; then - echo "build directory $BUILD_DIR not found, exiting." - exit 1 -fi - -if [ ! -d "$BUILD_DIR/include" ]; then - mkdir "$BUILD_DIR/include" -fi - -if [ ! -d "$BUILD_DIR/include/bits" ]; then - mkdir "$BUILD_DIR/include/bits" -fi - -if [ ! -d "$BUILD_DIR/src" ]; then - mkdir "$BUILD_DIR/src" -fi - -OUT_H="$BUILD_DIR/include/bits/std_limits.h" -OUT_C="$BUILD_DIR/src/limitsMEMBERS.cc" - -if [ -f $OUT_C ]; then - rm -f $OUT_H $OUT_C $OUT_H-t $OUT_C-t -fi - -SRC_DIR=$2 -if [ ! -d "$SRC_DIR" ]; then - echo "source directory $SRC_DIR not found, exiting." - exit 1 -fi - -XCOMPILE=$3 -if [ $XCOMPILE -eq 1 ]; then - echo "using default values for cross compiles" - cp $SRC_DIR/include/bits/limits_generic.h $OUT_H - cp $SRC_DIR/src/limits_generic.cc $OUT_C - exit 0; -fi - -CC=${CC="$BUILD_DIR/../../gcc/xgcc -B$BUILD_DIR/../../gcc/"} - -# We output to a temporary file, so that we don't appear to have -# succeeded unless we actually do. -cat <<EOF > $OUT_H-t -// The template and inlines for the -*- C++ -*- numeric_limits classes. - -// Copyright (C) 1999-2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. - -// Note: this is not a conforming implementation. -// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr> - -// -// THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT! -// - -// -// ISO 14882:1998 -// 18.2.1 -// - -#ifndef _CPP_NUMERIC_LIMITS -#define _CPP_NUMERIC_LIMITS 1 - -#include <bits/c++config.h> -#include <bits/std_cfloat.h> - -namespace std -{ - enum float_round_style - { - round_indeterminate = -1, - round_toward_zero = 0, - round_to_nearest = 1, - round_toward_infinity = 2, - round_toward_neg_infinity = 3 - }; - - enum float_denorm_style - { - denorm_indeterminate = -1, - denorm_absent = 0, - denorm_present = 1 - }; - - template<typename _Tp> - struct numeric_limits - { - static const bool is_specialized = false; - - static _Tp min() throw() { return static_cast<_Tp>(0); } - static _Tp max() throw() { return static_cast<_Tp>(0); } - - static const int digits = 0; - static const int digits10 = 0; - static const bool is_signed = false; - static const bool is_integer = false; - static const bool is_exact = false; - static const int radix = 0; - - static _Tp epsilon() throw() { return static_cast<_Tp>(0); } - static _Tp round_error() throw() { return static_cast<_Tp>(0); } - - static const int min_exponent = 0; - static const int min_exponent10 = 0; - static const int max_exponent = 0; - static const int max_exponent10 = 0; - - static const bool has_infinity = false; - static const bool has_quiet_NaN = false; - static const bool has_signaling_NaN = false; - static const float_denorm_style has_denorm = denorm_absent; - static const bool has_denorm_loss = false; - - static _Tp infinity() throw() { return static_cast<_Tp>(0); } - static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); } - static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); } - static _Tp denorm_min() throw() { return static_cast<_Tp>(0); } - - static const bool is_iec559 = false; - static const bool is_bounded = false; - static const bool is_modulo = false; - - static const bool traps = false; - static const bool tinyness_before = false; - static const float_round_style round_style = round_toward_zero; - }; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::is_specialized; - - template<typename _Tp> - const int - numeric_limits<_Tp>::digits; - - template<typename _Tp> - const int - numeric_limits<_Tp>::digits10; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::is_signed; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::is_integer; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::is_exact; - - template<typename _Tp> - const int - numeric_limits<_Tp>::radix; - - template<typename _Tp> - const int - numeric_limits<_Tp>::min_exponent; - - template<typename _Tp> - const int - numeric_limits<_Tp>::min_exponent10; - - template<typename _Tp> - const int - numeric_limits<_Tp>::max_exponent; - - template<typename _Tp> - const int - numeric_limits<_Tp>::max_exponent10; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::has_infinity; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::has_quiet_NaN; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::has_signaling_NaN; - - template<typename _Tp> - const float_denorm_style - numeric_limits<_Tp>::has_denorm; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::has_denorm_loss; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::is_iec559; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::is_bounded; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::is_modulo; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::traps; - - template<typename _Tp> - const bool - numeric_limits<_Tp>::tinyness_before; - - template<typename _Tp> - const float_round_style - numeric_limits<_Tp>::round_style; - - template<typename _Tp> _Tp __limits_infinity(); - template<typename _Tp> _Tp __limits_quiet_NaN(); - template<typename _Tp> _Tp __limits_signaling_NaN(); - template<typename _Tp> _Tp __limits_denorm_min(); - -EOF - -# Must turn off exceptions, because the C++ exception handling support -# routines have not been built yet. -echo "$CC -I$BUILD_DIR -fno-exceptions \ - -o $BUILD_DIR/src/gen-num-limits $SRC_DIR/src/gen-num-limits.cc" - -{ $CC -I$BUILD_DIR -fno-exceptions \ - -o "$BUILD_DIR/src/gen-num-limits" "$SRC_DIR/src/gen-num-limits.cc" -} || { - echo "gen-num-limits failed to build, exiting." - exit 1 -} - -"$BUILD_DIR/src/gen-num-limits" >> $OUT_H-t || { - echo "gen-num-limits failed to execute, exiting." - exit 1 -} - -cat <<EOF >> $OUT_H-t -} // namespace std - -#endif // _CPP_NUMERIC_LIMITS -EOF - -trait_name=numeric_limits - -cat <<EOF > $OUT_C-t -// Static data members of -*- C++ -*- numeric_limits classes - -// Copyright (C) 1999, 2000 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. - -// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr> - -// -// ISO C++ 14882:1998 -// 18.2.1 -// - -#include <bits/std_limits.h> -namespace std { -EOF - -for type_name in bool char 'signed char' 'unsigned char' \ - short 'unsigned short' int 'unsigned int' \ - long 'unsigned long' 'long long' 'unsigned long long' \ - float double 'long double' - do - grep "<$type_name>" $OUT_H-t >/dev/null 2>&1 || continue - cat <<EOF >> $OUT_C-t - - const bool $trait_name<$type_name>::is_specialized; - const int $trait_name<$type_name>::digits; - const int $trait_name<$type_name>::digits10; - const bool $trait_name<$type_name>::is_signed; - const bool $trait_name<$type_name>::is_integer; - const bool $trait_name<$type_name>::is_exact; - const int $trait_name<$type_name>::radix; - const int $trait_name<$type_name>::min_exponent; - const int $trait_name<$type_name>::min_exponent10; - const int $trait_name<$type_name>::max_exponent; - const int $trait_name<$type_name>::max_exponent10; - const bool $trait_name<$type_name>::has_infinity; - const bool $trait_name<$type_name>::has_quiet_NaN; - const bool $trait_name<$type_name>::has_signaling_NaN; - const float_denorm_style $trait_name<$type_name>::has_denorm; - const bool $trait_name<$type_name>::has_denorm_loss; - const bool $trait_name<$type_name>::is_iec559; - const bool $trait_name<$type_name>::is_bounded; - const bool $trait_name<$type_name>::is_modulo; - const bool $trait_name<$type_name>::traps; - const bool $trait_name<$type_name>::tinyness_before; - const float_round_style $trait_name<$type_name>::round_style; -EOF - -done - -cat <<EOF >> $OUT_C-t -} // namespace std - - -EOF - -mv $OUT_C-t $OUT_C -mv $OUT_H-t $OUT_H - - diff --git a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in index 5f01f39f28e..b8a93ae010d 100644 --- a/libstdc++-v3/po/Makefile.in +++ b/libstdc++-v3/po/Makefile.in @@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@ CLOCALE_H = @CLOCALE_H@ CMESSAGES_H = @CMESSAGES_H@ CPP = @CPP@ +CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ CSTDIO_H = @CSTDIO_H@ CXX = @CXX@ @@ -106,7 +107,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ -LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 89342c392d6..b930b4f0a48 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -75,6 +75,7 @@ CCODECVT_H = @CCODECVT_H@ CLOCALE_H = @CLOCALE_H@ CMESSAGES_H = @CMESSAGES_H@ CPP = @CPP@ +CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ CSTDIO_H = @CSTDIO_H@ CXXCPP = @CXXCPP@ @@ -100,7 +101,6 @@ LIBICONV = @LIBICONV@ LIBMATHOBJS = @LIBMATHOBJS@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ -LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ diff --git a/libstdc++-v3/src/gen-num-limits.cc b/libstdc++-v3/src/gen-num-limits.cc deleted file mode 100644 index 6fbfdb73fff..00000000000 --- a/libstdc++-v3/src/gen-num-limits.cc +++ /dev/null @@ -1,844 +0,0 @@ -// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. - -// -// Written by Gabriel Dos Reis <gdr@gcc.gnu.org> -// -// Note: This program outputs speciliazations of ISO C++ class template -// numeric_limits<> as described in 18.2.1. -// Do not compile with optimization turned on. -// - -#include <config.h> -#include <limits.h> -#include <float.h> -#include <stdio.h> -#include <signal.h> -#include <setjmp.h> -#include <math.h> -#ifdef _GLIBCPP_USE_WCHAR_T -#include <wchar.h> -#endif - -// mknumeric_limits will first try to compile this file with -// HAVE_SIGSETJMP. If it fails, then it will try without it. Some -// systems, such as GNU/Linux/sparc, would remain with the signal -// blocked if the signal handler uses longjmp instead of siglongjmp. -// We assume here setjmp/longjmp will preserve the sigblock mask if -// sigsetjmp is not present. - -#if ! HAVE_SIGSETJMP -# define sigjmp_buf jmp_buf -# define sigsetjmp(buf, save) setjmp (buf) -# define siglongjmp(env, ret) longjmp (env, ret) -#endif - -const char tab[] = " "; -const char tab2[] = " "; -const char* bool_alpha[] = { "false", "true" }; -const double log10_of_two = .30102999566398119; -const int bits_per_byte = CHAR_BIT; -const int integer_base_rep = 2; - - -// -// numeric_limits members are all static (as it is usually the case for -// traits) and of three kinds: predicates, values and functions. -// Actually there is no harm to think of values and functions as being -// of the same kind. Their main purposes are to denote values. -// - - -// -// Integer types: bool, char, signed char, unsigned char, wchar_t, -// short, unsigned short, int, unsigned, long, unsigned long, -// and possibly long long and unsigned long long -// -// Here ISO 14882 disagrees with LIA-1 in stating bool to be an -// integer type. Therefore itn't suprising to see ambiguity in the -// interpretation of some members. Need to keep track of the discusion -// in LWG on this topic. -// -// Integer types are first promoted to int or long before the actual -// arithmetical operations are carried out. Therefore testing whether -// traps occur amounts -- for integer types -- to test whether traps -// occur for int, unsigned, long, unsigned long. Furthermore -// overflow cannot happen for unsigned integer types. - -sigjmp_buf env; - -/* The prototype of signal() may vary. Accomodate variations such as - void(*)(int) and void(*)(...). */ -template <typename signal_handler_type, typename signal_number_type> -inline void (*signal_adapter (signal_handler_type - (*signal_func)(signal_number_type, - signal_handler_type), - signal_number_type arg, - void (*handler)(int)))(int) -{ - return (void (*)(int))(*signal_func)(arg, (signal_handler_type)handler); -} - -template <typename signal_handler_type, typename signal_number_type> -inline void (*signal_adapter (signal_handler_type (*signal_func)(...), - signal_number_type arg, - void (*handler)(int)))(int) -{ - return (void (*)(int))(*signal_func)(arg, (signal_handler_type)handler); -} - -void signal_handler(int sig) -{ -#ifdef __CYGWIN__ - static sigset_t x; - signal_adapter (signal, sig, signal_handler); - sigemptyset (&x); - sigprocmask(SIG_SETMASK, &x, NULL); -#endif /* __CYGWIN__ */ - siglongjmp(env, sig); -} - -template<typename Operation> -bool trapping(const Operation& op) -{ - if (sigsetjmp(env, 1) == 0) op(); - else return true; - return false; -} - -template<typename T> - struct division_by_zero - { - void operator() () const - { - volatile T zero = T(); - volatile T one = T(1); - volatile T infinity = one / zero; - } - }; - -template<typename T> - struct overflow - { - void operator() () const - { - T i = T(1); - T j = T(); - while (i>j) { - j = i; - i = i * 2 + 1; - } - } - }; - -template<typename T> struct underflow { }; - - -// Set various signals handler for trapping aritmetic ops. -void set_signals_handler() -{ - signal_adapter(signal, SIGFPE, signal_handler); - signal_adapter(signal, SIGTRAP, signal_handler); - // This is necessary for Linux/SPARC. - signal_adapter(signal, SIGILL, signal_handler); -} - -// traps -template<typename T> void traps() -{ - fflush(NULL); - set_signals_handler(); - bool trap_flag = trapping(division_by_zero<T>()); - set_signals_handler(); - trap_flag = trap_flag || trapping(overflow<T>()); - const char* p = bool_alpha[trap_flag]; - printf("%s%s = %s;\n", tab2, "static const bool traps", p); -} - -#define SPECIALIZE_TRAPPING(T) \ -template<> void traps< T >() \ -{ \ - fflush(NULL); \ - set_signals_handler(); \ - const char* p = bool_alpha[trapping(division_by_zero<T>())]; \ - printf("%s%s = %s;\n", tab2, "static const bool traps", p); \ -} - -SPECIALIZE_TRAPPING(unsigned char); -SPECIALIZE_TRAPPING(unsigned short); -SPECIALIZE_TRAPPING(unsigned int); -SPECIALIZE_TRAPPING(unsigned long); -#if _GLIBCPP_USE_LONG_LONG -SPECIALIZE_TRAPPING(unsigned long long); -#endif - -#undef SPECIALIZE_TRAPPING - -template<typename T> - struct type_name_trait - { - static const char type_name[]; - static const char trait_name[]; - }; - -#define DEFINED_TYPE_NAME(T) \ -template<> \ -const char type_name_trait< T >::type_name[] = #T; \ -template<> \ -const char type_name_trait< T >::trait_name[] = "numeric_limits<" #T ">"; - -DEFINED_TYPE_NAME(bool); -DEFINED_TYPE_NAME(char); -DEFINED_TYPE_NAME(signed char); -DEFINED_TYPE_NAME(unsigned char); -DEFINED_TYPE_NAME(wchar_t); -DEFINED_TYPE_NAME(short); -DEFINED_TYPE_NAME(unsigned short); -DEFINED_TYPE_NAME(int); -DEFINED_TYPE_NAME(unsigned int); -DEFINED_TYPE_NAME(long); -DEFINED_TYPE_NAME(unsigned long); -#ifdef _GLIBCPP_USE_LONG_LONG -DEFINED_TYPE_NAME(long long); -DEFINED_TYPE_NAME(unsigned long long); -#endif -DEFINED_TYPE_NAME(float); -DEFINED_TYPE_NAME(double); -DEFINED_TYPE_NAME(long double); - -#undef DEFINED_TYPE_NAME - -// declarator -template<typename T> - struct declarator : type_name_trait<T> - { - typedef type_name_trait<T> base; - static void start() - { - printf("%s%s %s %s\n", tab, "template<> struct", base::trait_name, "{"); - } - - static void end() - { printf("%s};\n\n", tab); } - }; - - -// -// Predicates -// -template<typename T> - struct predicate - { - static const bool is_signed; - static const bool is_integer; - static const bool is_exact; - - static const bool has_infinity; - static const bool has_quiet_nan; - static const bool has_signaling_nan; - static const bool has_denorm; - static const bool has_denorm_loss; - - static const bool is_iec559; - static const bool is_bounded; - - static const bool traps; - }; - -template<typename T> -const bool predicate<T>::is_signed = T(-1) < 0; - -// Non integer types should specialize this -template<typename T> -const bool predicate<T>::is_integer = true; - -// Non exact types should specialize this; -template<typename T> -const bool predicate<T>::is_exact = true; - -#define SPECIALIZE_EXACTNESS(T) \ -template<> \ -const bool predicate< T >::is_integer = false; \ -template<> \ -const bool predicate< T >::is_exact = false - -SPECIALIZE_EXACTNESS(float); -SPECIALIZE_EXACTNESS(double); -SPECIALIZE_EXACTNESS(long double); - -#undef SPECIALIZE_EXACTNESS - - -template<typename T> -const bool predicate<T>::has_infinity = false; - -template<typename T> -const bool predicate<T>::has_quiet_nan = false; - -template<typename T> -const bool predicate<T>::has_signaling_nan = false; - -template<typename T> -const bool predicate<T>::has_denorm = false; - -template<typename T> -const bool predicate<T>::has_denorm_loss = false; - - - -// Each type conforming to IEC559 specifications should specialize this. -template<typename T> -const bool predicate<T>::is_iec559 = false; - -#define SPECIALIZE_IEC559(T) \ -template<> \ -const bool predicate< T >::is_iec559 = true - -SPECIALIZE_IEC559(bool); -SPECIALIZE_IEC559(int); -SPECIALIZE_IEC559(unsigned int); -SPECIALIZE_IEC559(long); -SPECIALIZE_IEC559(unsigned long); -#ifdef _GLIBCPP_USE_LONG_LONG -SPECIALIZE_IEC559(long long); -SPECIALIZE_IEC559(unsigned long long); -#endif - -#undef SPECIALIZE_IEC559 - -// -// Values -// -template<typename T> - struct value - { - static const char min[]; - static const char max[]; - - static const int digits; - static const int digits10; - - static const int radix; - static const char epsilon[]; - static const char round_error[]; - - static const int min_exponent; - static const int min_exponent10; - static const int max_exponent; - static const int max_exponent10; - }; - -#define DEFINE_EXTREMA(T, m, M) DO_DEFINE_EXTREMA(T, m, M) -#define DO_DEFINE_EXTREMA(T, m, M) \ -template<> \ -const char value< T >::min[] = #m; \ -template<> \ -const char value< T >::max[] = #M - -DEFINE_EXTREMA(bool, false, true); -DEFINE_EXTREMA(char, CHAR_MIN, CHAR_MAX); -DEFINE_EXTREMA(signed char, SCHAR_MIN, SCHAR_MAX); -DEFINE_EXTREMA(unsigned char, 0, UCHAR_MAX); -#ifdef _GLIBCPP_USE_WCHAR_T -DEFINE_EXTREMA(wchar_t, WCHAR_MIN, WCHAR_MAX); -#endif -DEFINE_EXTREMA(short, SHRT_MIN, SHRT_MAX); -DEFINE_EXTREMA(unsigned short, 0, USHRT_MAX); -DEFINE_EXTREMA(int, INT_MIN, INT_MAX); -DEFINE_EXTREMA(unsigned int, 0, UINT_MAX); -DEFINE_EXTREMA(long, LONG_MIN, LONG_MAX); -DEFINE_EXTREMA(unsigned long, 0, ULONG_MAX); -#ifdef _GLIBCPP_USE_LONG_LONG -DEFINE_EXTREMA(long long, (-__LONG_LONG_MAX__-1), __LONG_LONG_MAX__); -DEFINE_EXTREMA(unsigned long long, 0, (__LONG_LONG_MAX__ * 2ULL + 1)); -#endif -DEFINE_EXTREMA(float, FLT_MIN, FLT_MAX); -DEFINE_EXTREMA(double, DBL_MIN, DBL_MAX); -DEFINE_EXTREMA(long double, LDBL_MIN, LDBL_MAX); - -#undef DEFINE_EXTREMA -#undef DO_DEFINE_EXTREMA - -// Non integer types should specialize this -template<typename T> -const int value<T>::digits = - bits_per_byte * sizeof(T) - int(predicate<T>::is_signed); - -// Non integer types should specialize this. Always two for -// integer types. -template<typename T> -const int value<T>::radix = 2; - -#define SPECIALIZE_DIGITS(T, D, D10) \ -template<> \ -const int value< T >::digits = D; \ -template<> \ -const int value< T >::digits10 = D10 - -SPECIALIZE_DIGITS(float, FLT_MANT_DIG, FLT_DIG); -SPECIALIZE_DIGITS(double, DBL_MANT_DIG, DBL_DIG); -SPECIALIZE_DIGITS(long double, LDBL_MANT_DIG, LDBL_DIG); - -#undef SPECIALIZE_DIGITS - - -#define SPECIALIZE_RADIX(T, R) \ -template<> \ -const int value< T >::radix = R - -SPECIALIZE_RADIX(float, FLT_RADIX); -SPECIALIZE_RADIX(double, FLT_RADIX); -SPECIALIZE_RADIX(long double, FLT_RADIX); - -#undef SPECIALIZE_RADIX - -// Non integer types should specialize this. -// Unfortunately, systems that don't deal with weak linking correctly -// (Ie, hpux and aix), cannot use this sophisticated yet sane method. So, -// explicitly instantiate all the data members here so that they will -// be happy. - -// sophisticated, sane method -#if 0 -template<typename T> -const char value<T>::epsilon[] = "0"; -#endif - -#define SPECIALIZE_EPSILON(T, E) DO_SPECIALIZE_EPSILON(T, E) -#define DO_SPECIALIZE_EPSILON(T, E) \ -template<> \ -const char value< T >::epsilon[] = #E - -// unsophisticated, gross method -#if 1 -SPECIALIZE_EPSILON(bool, 0); -SPECIALIZE_EPSILON(char, 0); -SPECIALIZE_EPSILON(unsigned char, 0); -SPECIALIZE_EPSILON(signed char, 0); -SPECIALIZE_EPSILON(wchar_t, 0); -SPECIALIZE_EPSILON(short, 0); -SPECIALIZE_EPSILON(unsigned short, 0); -SPECIALIZE_EPSILON(int, 0); -SPECIALIZE_EPSILON(unsigned int, 0); -SPECIALIZE_EPSILON(long, 0); -SPECIALIZE_EPSILON(unsigned long, 0); -SPECIALIZE_EPSILON(long long, 0); -SPECIALIZE_EPSILON(unsigned long long, 0); -#endif - -SPECIALIZE_EPSILON(float, FLT_EPSILON); -SPECIALIZE_EPSILON(double, DBL_EPSILON); -SPECIALIZE_EPSILON(long double, LDBL_EPSILON); - -#undef DO_SPECIALIZE_EPSILON -#undef SPECIALIZE_EPSILON - - -// Non integer types should specialize this. -// Unfortunately, systems that don't deal with weak linking correctly -// (Ie, hpux and aix), cannot use this sophisticated yet sane method. So, -// explicitly instantiate all the data members here so that they will -// be happy. - -// sophisticated, sane method -#if 0 -template<typename T> -const char value<T>::round_error[] = "0"; -#endif - -#define SPECIALIZE_ROUND_ERROR(T, R) \ -template<> \ -const char value< T >::round_error[] = #R -// unsophisticated, gross method -#if 1 -SPECIALIZE_ROUND_ERROR(bool, 0); -SPECIALIZE_ROUND_ERROR(char, 0); -SPECIALIZE_ROUND_ERROR(unsigned char, 0); -SPECIALIZE_ROUND_ERROR(signed char, 0); -SPECIALIZE_ROUND_ERROR(wchar_t, 0); -SPECIALIZE_ROUND_ERROR(short, 0); -SPECIALIZE_ROUND_ERROR(unsigned short, 0); -SPECIALIZE_ROUND_ERROR(int, 0); -SPECIALIZE_ROUND_ERROR(unsigned int, 0); -SPECIALIZE_ROUND_ERROR(long, 0); -SPECIALIZE_ROUND_ERROR(unsigned long, 0); -SPECIALIZE_ROUND_ERROR(long long, 0); -SPECIALIZE_ROUND_ERROR(unsigned long long, 0); -#endif - -SPECIALIZE_ROUND_ERROR(float, 1.0f); -SPECIALIZE_ROUND_ERROR(double, 1.0); -SPECIALIZE_ROUND_ERROR(long double, 1.0L); - -#undef SPECIALIZE_ROUND_ERROR - - -template<typename T> -const int value<T>::min_exponent = 0; - -template<typename T> -const int value<T>::min_exponent10 = 0; - -template<typename T> -const int value<T>::max_exponent = 0; - -template<typename T> -const int value<T>::max_exponent10 = 0; - -#define SPECIALIZE_EXPONENTS(T, m, m10, M, M10) \ -template<> \ -const int value< T >::min_exponent = m; \ -template<> \ -const int value< T >::min_exponent10 = m10; \ -template<> \ -const int value< T >::max_exponent = M; \ -template<> \ -const int value< T >::max_exponent10 = M10 - -SPECIALIZE_EXPONENTS(float, FLT_MIN_EXP, FLT_MIN_10_EXP, - FLT_MAX_EXP, FLT_MAX_10_EXP); -SPECIALIZE_EXPONENTS(double, DBL_MIN_EXP, DBL_MIN_10_EXP, - DBL_MAX_EXP, DBL_MAX_10_EXP); -SPECIALIZE_EXPONENTS(long double, LDBL_MIN_EXP, LDBL_MIN_10_EXP, - LDBL_MAX_EXP, LDBL_MAX_10_EXP); - -#undef SPECIALIZE_EXPONENTS - -// -// Functions to output predicates and values. -// - -template<typename T> void is_signed() -{ - printf("%s%s = %s;\n", tab2, "static const bool is_signed", - bool_alpha[predicate<T>::is_signed]); -} - -// a fundamental type is modulo iff it isn't signed -template<typename T> void is_modulo() -{ - printf("%s%s = %s;\n", tab2, "static const bool is_modulo", - bool_alpha[! predicate<T>::is_signed]); -} - -template<typename T> -void min() -{ - printf("%s%s%s%s\n%s%s%s%s\n", tab2, "static ", declarator<T>::type_name, - " min() throw()", tab2, "{ return ", value<T>::min, "; }"); -} - -template<typename T> -void max() -{ - printf("%s%s%s%s\n%s%s%s%s\n", tab2, "static ", declarator<T>::type_name, - " max() throw()", tab2, "{ return ", value<T>::max, "; }"); -} - -template<typename T> -void is_integer() -{ - printf("%s%s = %s;\n", tab2, "static const bool is_integer", - bool_alpha[predicate<T>::is_integer]); -} - -template<typename T> -void is_exact() -{ - printf("%s%s = %s;\n", tab2, "static const bool is_exact", - bool_alpha[predicate<T>::is_exact]); -} - -template<typename T> -void digits() -{ - printf("%s%s = %d;\n", tab2, "static const int digits", - value<T>::digits); -} - -template<typename T> -void digits10() -{ - printf("%s%s = %d;\n", tab2, "static const int digits10", - int(log10_of_two * value<T>::digits) + 1); -} - -template<typename T> -void radix() -{ - printf("%s%s = %d;\n", tab2, "static const int radix", - value<T>::radix); -} - -template<typename T> -void epsilon() -{ - printf("%s%s %s %s\n%s%s %s%s\n", tab2, "static", - declarator<T>::type_name, "epsilon() throw()", - tab2, "{ return", value<T>::epsilon, "; }"); -} - -template<typename T> -void round_error() -{ - printf("%s%s %s %s\n%s%s %s%s\n", tab2, "static", - declarator<T>::type_name, "round_error() throw()", - tab2, "{ return", value<T>::round_error, "; }"); -} - -template<typename T> -void min_exponent() -{ - printf("%s%s = %d;\n", tab2, "static const int min_exponent", - value<T>::min_exponent); -} - -template<typename T> -void min_exponent10() -{ - printf("%s%s = %d;\n", tab2, "static const int min_exponent10", - value<T>::min_exponent10); -} - -template<typename T> -void max_exponent() -{ - printf("%s%s = %d;\n", tab2, "static const int max_exponent", - value<T>::max_exponent); -} - -template<typename T> -void max_exponent10() -{ - printf("%s%s = %d;\n", tab2, "static const int max_exponent10", - value<T>::max_exponent10); -} - -template<typename T> -void has_infinity() -{ - printf("%s%s = %s;\n", tab2, "static const bool has_infinity", - bool_alpha[predicate<T>::has_infinity]); -} - -template<typename T> -void has_quiet_nan() -{ - printf("%s%s = %s;\n", tab2, "static const bool has_quiet_NaN", - bool_alpha[predicate<T>::has_quiet_nan]); -} - -template<typename T> -void has_signaling_nan() -{ - printf("%s%s = %s;\n", tab2, "static const bool has_signaling_NaN", - bool_alpha[predicate<T>::has_signaling_nan]); -} - -template<typename T> -void has_denorm_loss() -{ - printf("%s%s = %s;\n", tab2, "static const bool has_denorm_loss", - bool_alpha[predicate<T>::has_denorm_loss]); -} - -template<typename T> - struct infinity_trait - { - static void has_denorm() - { - printf("%s%s;\n", tab2, "static const float_denorm_style " - "has_denorm = denorm_absent"); - } - - static void infinity() - { - printf("%s%s %s %s\n%s%s%s%s\n", tab2, "static", - declarator<T>::type_name, "infinity() throw()", tab2, - "{ return static_cast<", declarator<T>::type_name, ">(0); }"); - } - - static void quiet_NaN() - { - printf("%s%s %s %s\n%s%s%s%s\n", tab2, "static", - declarator<T>::type_name, "quiet_NaN() throw()", - tab2, "{ return static_cast<", declarator<T>::type_name, - ">(0); }"); - } - - static void signaling_NaN() - { - printf("%s%s %s %s\n%s%s%s%s\n", tab2, "static", - declarator<T>::type_name, "signaling_NaN() throw()", - tab2, "{ return static_cast<", declarator<T>::type_name, - ">(0); }"); - } - - static void denorm_min() - { - printf("%s%s %s %s\n%s%s%s%s\n", tab2, "static", - declarator<T>::type_name, "denorm_min() throw()", - tab2, "{ return static_cast<", declarator<T>::type_name, - ">(0); }"); - } - }; - - -template<typename T> -void is_iec559() -{ - printf("%s%s = %s;\n", tab2, "static const bool is_iec559", - bool_alpha[predicate<T>::is_iec559]); -} - -// tinyness_before -template<typename T> -void tinyness_before() -{ - printf("%s%s;\n", tab2, "static const bool tinyness_before = false"); -} - -// round style -template<typename T> -void round_style() -{ - printf("%s%s;\n", tab2, "static const float_round_style " - "round_style = round_toward_zero"); -} - - - -// type traits -template<typename T> - struct type_trait - { - type_trait() - { - declarator<T>::start(); - printf("%s%s;\n\n", tab2, "static const bool is_specialized = true"); - min<T>(); - max<T>(); - printf("\n"); - digits<T>(); - digits10<T>(); - is_signed<T>(); - is_integer<T>(); - is_exact<T>(); - radix<T>(); - epsilon<T>(); - round_error<T>(); - printf("\n"); - min_exponent<T>(); - min_exponent10<T>(); - max_exponent<T>(); - max_exponent10<T>(); - printf("\n"); - has_infinity<T>(); - has_quiet_nan<T>(); - has_signaling_nan<T>(); - infinity_trait<T>::has_denorm(); - has_denorm_loss<T>(); - printf("\n"); - infinity_trait<T>::infinity(); - infinity_trait<T>::quiet_NaN(); - infinity_trait<T>::signaling_NaN(); - infinity_trait<T>::denorm_min(); - printf("\n"); - is_iec559<T>(); - printf("%s%s;\n", tab2, "static const bool is_bounded = true"); - is_modulo<T>(); - printf("\n"); - traps<T>(); - tinyness_before<T>(); - round_style<T>(); - declarator<T>::end(); - } - }; - -int main() -{ - type_trait<bool>(); - - type_trait<char>(); - type_trait<signed char>(); - type_trait<unsigned char>(); -#if defined( _GLIBCPP_USE_WCHAR_T) - type_trait<wchar_t>(); -#endif - - type_trait<short>(); - type_trait<unsigned short>(); - - type_trait<int>(); - type_trait<unsigned int>(); - - type_trait<long>(); - type_trait<unsigned long>(); - -#ifdef _GLIBCPP_USE_LONG_LONG - type_trait<long long>(); - type_trait<unsigned long long>(); -#endif - - type_trait<float>(); - type_trait<double>(); - type_trait<long double>(); - - // x86/linux gets this weirdness for the min/max functions: - // static long double min() throw() - // { return (__extension__ ((union __convert_long_double) - // {__convert_long_double_i: {0x0, 0x80000000, 0x1, 0x0}}) - // .__convert_long_double_d); } -} - -// G++ doesn't have support for automatic instantiation of static data -// members on platforms that don't have weak symbols. On AIX, in -// particular, static data members must be explicitly instantiated. -// So, we explicitly instantiate some of the ones we need. To save -// typing, we don't name the static data members explicitly; we -// instead name their containing types. - -#define INSTANTIATIONS(TYPE) \ - template struct predicate<TYPE>; \ - template struct value<TYPE> - -INSTANTIATIONS (bool); -INSTANTIATIONS (char); -INSTANTIATIONS (signed char); -INSTANTIATIONS (unsigned char); -INSTANTIATIONS (short); -INSTANTIATIONS (unsigned short); -INSTANTIATIONS (int); -INSTANTIATIONS (unsigned int); -INSTANTIATIONS (long); -INSTANTIATIONS (unsigned long); -INSTANTIATIONS (float); -INSTANTIATIONS (double); -INSTANTIATIONS (long double); -#ifdef _GLIBCPP_USE_WCHAR_T -INSTANTIATIONS (wchar_t); -#endif diff --git a/libstdc++-v3/src/limits.cc b/libstdc++-v3/src/limits.cc index bf7c1b0a165..38bf297aa52 100644 --- a/libstdc++-v3/src/limits.cc +++ b/libstdc++-v3/src/limits.cc @@ -35,6 +35,7 @@ // #include <bits/std_limits.h> + namespace std { // bool @@ -425,5 +426,3 @@ namespace std const bool numeric_limits<long double>::tinyness_before; const float_round_style numeric_limits<long double>::round_style; } // namespace std - - diff --git a/libstdc++-v3/src/limits_generic.cc b/libstdc++-v3/src/limits_generic.cc deleted file mode 100644 index 655e3655003..00000000000 --- a/libstdc++-v3/src/limits_generic.cc +++ /dev/null @@ -1,340 +0,0 @@ -// Static data members of -*- C++ -*- numeric_limits classes - -// Copyright (C) 2000 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. - -// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr> - -// -// ISO C++ 14882:1998 -// 18.2.1 -// - -#include <bits/std_limits.h> -namespace std { - - const bool numeric_limits<bool>::is_specialized; - const int numeric_limits<bool>::digits; - const int numeric_limits<bool>::digits10; - const bool numeric_limits<bool>::is_signed; - const bool numeric_limits<bool>::is_integer; - const bool numeric_limits<bool>::is_exact; - const int numeric_limits<bool>::radix; - const int numeric_limits<bool>::min_exponent; - const int numeric_limits<bool>::min_exponent10; - const int numeric_limits<bool>::max_exponent; - const int numeric_limits<bool>::max_exponent10; - const bool numeric_limits<bool>::has_infinity; - const bool numeric_limits<bool>::has_quiet_NaN; - const bool numeric_limits<bool>::has_signaling_NaN; - const float_denorm_style numeric_limits<bool>::has_denorm; - const bool numeric_limits<bool>::has_denorm_loss; - const bool numeric_limits<bool>::is_iec559; - const bool numeric_limits<bool>::is_bounded; - const bool numeric_limits<bool>::is_modulo; - const bool numeric_limits<bool>::traps; - const bool numeric_limits<bool>::tinyness_before; - const float_round_style numeric_limits<bool>::round_style; - - const bool numeric_limits<char>::is_specialized; - const int numeric_limits<char>::digits; - const int numeric_limits<char>::digits10; - const bool numeric_limits<char>::is_signed; - const bool numeric_limits<char>::is_integer; - const bool numeric_limits<char>::is_exact; - const int numeric_limits<char>::radix; - const int numeric_limits<char>::min_exponent; - const int numeric_limits<char>::min_exponent10; - const int numeric_limits<char>::max_exponent; - const int numeric_limits<char>::max_exponent10; - const bool numeric_limits<char>::has_infinity; - const bool numeric_limits<char>::has_quiet_NaN; - const bool numeric_limits<char>::has_signaling_NaN; - const float_denorm_style numeric_limits<char>::has_denorm; - const bool numeric_limits<char>::has_denorm_loss; - const bool numeric_limits<char>::is_iec559; - const bool numeric_limits<char>::is_bounded; - const bool numeric_limits<char>::is_modulo; - const bool numeric_limits<char>::traps; - const bool numeric_limits<char>::tinyness_before; - const float_round_style numeric_limits<char>::round_style; - - const bool numeric_limits<signed char>::is_specialized; - const int numeric_limits<signed char>::digits; - const int numeric_limits<signed char>::digits10; - const bool numeric_limits<signed char>::is_signed; - const bool numeric_limits<signed char>::is_integer; - const bool numeric_limits<signed char>::is_exact; - const int numeric_limits<signed char>::radix; - const int numeric_limits<signed char>::min_exponent; - const int numeric_limits<signed char>::min_exponent10; - const int numeric_limits<signed char>::max_exponent; - const int numeric_limits<signed char>::max_exponent10; - const bool numeric_limits<signed char>::has_infinity; - const bool numeric_limits<signed char>::has_quiet_NaN; - const bool numeric_limits<signed char>::has_signaling_NaN; - const float_denorm_style numeric_limits<signed char>::has_denorm; - const bool numeric_limits<signed char>::has_denorm_loss; - const bool numeric_limits<signed char>::is_iec559; - const bool numeric_limits<signed char>::is_bounded; - const bool numeric_limits<signed char>::is_modulo; - const bool numeric_limits<signed char>::traps; - const bool numeric_limits<signed char>::tinyness_before; - const float_round_style numeric_limits<signed char>::round_style; - - const bool numeric_limits<unsigned char>::is_specialized; - const int numeric_limits<unsigned char>::digits; - const int numeric_limits<unsigned char>::digits10; - const bool numeric_limits<unsigned char>::is_signed; - const bool numeric_limits<unsigned char>::is_integer; - const bool numeric_limits<unsigned char>::is_exact; - const int numeric_limits<unsigned char>::radix; - const int numeric_limits<unsigned char>::min_exponent; - const int numeric_limits<unsigned char>::min_exponent10; - const int numeric_limits<unsigned char>::max_exponent; - const int numeric_limits<unsigned char>::max_exponent10; - const bool numeric_limits<unsigned char>::has_infinity; - const bool numeric_limits<unsigned char>::has_quiet_NaN; - const bool numeric_limits<unsigned char>::has_signaling_NaN; - const float_denorm_style numeric_limits<unsigned char>::has_denorm; - const bool numeric_limits<unsigned char>::has_denorm_loss; - const bool numeric_limits<unsigned char>::is_iec559; - const bool numeric_limits<unsigned char>::is_bounded; - const bool numeric_limits<unsigned char>::is_modulo; - const bool numeric_limits<unsigned char>::traps; - const bool numeric_limits<unsigned char>::tinyness_before; - const float_round_style numeric_limits<unsigned char>::round_style; - - const bool numeric_limits<short>::is_specialized; - const int numeric_limits<short>::digits; - const int numeric_limits<short>::digits10; - const bool numeric_limits<short>::is_signed; - const bool numeric_limits<short>::is_integer; - const bool numeric_limits<short>::is_exact; - const int numeric_limits<short>::radix; - const int numeric_limits<short>::min_exponent; - const int numeric_limits<short>::min_exponent10; - const int numeric_limits<short>::max_exponent; - const int numeric_limits<short>::max_exponent10; - const bool numeric_limits<short>::has_infinity; - const bool numeric_limits<short>::has_quiet_NaN; - const bool numeric_limits<short>::has_signaling_NaN; - const float_denorm_style numeric_limits<short>::has_denorm; - const bool numeric_limits<short>::has_denorm_loss; - const bool numeric_limits<short>::is_iec559; - const bool numeric_limits<short>::is_bounded; - const bool numeric_limits<short>::is_modulo; - const bool numeric_limits<short>::traps; - const bool numeric_limits<short>::tinyness_before; - const float_round_style numeric_limits<short>::round_style; - - const bool numeric_limits<unsigned short>::is_specialized; - const int numeric_limits<unsigned short>::digits; - const int numeric_limits<unsigned short>::digits10; - const bool numeric_limits<unsigned short>::is_signed; - const bool numeric_limits<unsigned short>::is_integer; - const bool numeric_limits<unsigned short>::is_exact; - const int numeric_limits<unsigned short>::radix; - const int numeric_limits<unsigned short>::min_exponent; - const int numeric_limits<unsigned short>::min_exponent10; - const int numeric_limits<unsigned short>::max_exponent; - const int numeric_limits<unsigned short>::max_exponent10; - const bool numeric_limits<unsigned short>::has_infinity; - const bool numeric_limits<unsigned short>::has_quiet_NaN; - const bool numeric_limits<unsigned short>::has_signaling_NaN; - const float_denorm_style numeric_limits<unsigned short>::has_denorm; - const bool numeric_limits<unsigned short>::has_denorm_loss; - const bool numeric_limits<unsigned short>::is_iec559; - const bool numeric_limits<unsigned short>::is_bounded; - const bool numeric_limits<unsigned short>::is_modulo; - const bool numeric_limits<unsigned short>::traps; - const bool numeric_limits<unsigned short>::tinyness_before; - const float_round_style numeric_limits<unsigned short>::round_style; - - const bool numeric_limits<int>::is_specialized; - const int numeric_limits<int>::digits; - const int numeric_limits<int>::digits10; - const bool numeric_limits<int>::is_signed; - const bool numeric_limits<int>::is_integer; - const bool numeric_limits<int>::is_exact; - const int numeric_limits<int>::radix; - const int numeric_limits<int>::min_exponent; - const int numeric_limits<int>::min_exponent10; - const int numeric_limits<int>::max_exponent; - const int numeric_limits<int>::max_exponent10; - const bool numeric_limits<int>::has_infinity; - const bool numeric_limits<int>::has_quiet_NaN; - const bool numeric_limits<int>::has_signaling_NaN; - const float_denorm_style numeric_limits<int>::has_denorm; - const bool numeric_limits<int>::has_denorm_loss; - const bool numeric_limits<int>::is_iec559; - const bool numeric_limits<int>::is_bounded; - const bool numeric_limits<int>::is_modulo; - const bool numeric_limits<int>::traps; - const bool numeric_limits<int>::tinyness_before; - const float_round_style numeric_limits<int>::round_style; - - const bool numeric_limits<unsigned int>::is_specialized; - const int numeric_limits<unsigned int>::digits; - const int numeric_limits<unsigned int>::digits10; - const bool numeric_limits<unsigned int>::is_signed; - const bool numeric_limits<unsigned int>::is_integer; - const bool numeric_limits<unsigned int>::is_exact; - const int numeric_limits<unsigned int>::radix; - const int numeric_limits<unsigned int>::min_exponent; - const int numeric_limits<unsigned int>::min_exponent10; - const int numeric_limits<unsigned int>::max_exponent; - const int numeric_limits<unsigned int>::max_exponent10; - const bool numeric_limits<unsigned int>::has_infinity; - const bool numeric_limits<unsigned int>::has_quiet_NaN; - const bool numeric_limits<unsigned int>::has_signaling_NaN; - const float_denorm_style numeric_limits<unsigned int>::has_denorm; - const bool numeric_limits<unsigned int>::has_denorm_loss; - const bool numeric_limits<unsigned int>::is_iec559; - const bool numeric_limits<unsigned int>::is_bounded; - const bool numeric_limits<unsigned int>::is_modulo; - const bool numeric_limits<unsigned int>::traps; - const bool numeric_limits<unsigned int>::tinyness_before; - const float_round_style numeric_limits<unsigned int>::round_style; - - const bool numeric_limits<long>::is_specialized; - const int numeric_limits<long>::digits; - const int numeric_limits<long>::digits10; - const bool numeric_limits<long>::is_signed; - const bool numeric_limits<long>::is_integer; - const bool numeric_limits<long>::is_exact; - const int numeric_limits<long>::radix; - const int numeric_limits<long>::min_exponent; - const int numeric_limits<long>::min_exponent10; - const int numeric_limits<long>::max_exponent; - const int numeric_limits<long>::max_exponent10; - const bool numeric_limits<long>::has_infinity; - const bool numeric_limits<long>::has_quiet_NaN; - const bool numeric_limits<long>::has_signaling_NaN; - const float_denorm_style numeric_limits<long>::has_denorm; - const bool numeric_limits<long>::has_denorm_loss; - const bool numeric_limits<long>::is_iec559; - const bool numeric_limits<long>::is_bounded; - const bool numeric_limits<long>::is_modulo; - const bool numeric_limits<long>::traps; - const bool numeric_limits<long>::tinyness_before; - const float_round_style numeric_limits<long>::round_style; - - const bool numeric_limits<unsigned long>::is_specialized; - const int numeric_limits<unsigned long>::digits; - const int numeric_limits<unsigned long>::digits10; - const bool numeric_limits<unsigned long>::is_signed; - const bool numeric_limits<unsigned long>::is_integer; - const bool numeric_limits<unsigned long>::is_exact; - const int numeric_limits<unsigned long>::radix; - const int numeric_limits<unsigned long>::min_exponent; - const int numeric_limits<unsigned long>::min_exponent10; - const int numeric_limits<unsigned long>::max_exponent; - const int numeric_limits<unsigned long>::max_exponent10; - const bool numeric_limits<unsigned long>::has_infinity; - const bool numeric_limits<unsigned long>::has_quiet_NaN; - const bool numeric_limits<unsigned long>::has_signaling_NaN; - const float_denorm_style numeric_limits<unsigned long>::has_denorm; - const bool numeric_limits<unsigned long>::has_denorm_loss; - const bool numeric_limits<unsigned long>::is_iec559; - const bool numeric_limits<unsigned long>::is_bounded; - const bool numeric_limits<unsigned long>::is_modulo; - const bool numeric_limits<unsigned long>::traps; - const bool numeric_limits<unsigned long>::tinyness_before; - const float_round_style numeric_limits<unsigned long>::round_style; - - const bool numeric_limits<float>::is_specialized; - const int numeric_limits<float>::digits; - const int numeric_limits<float>::digits10; - const bool numeric_limits<float>::is_signed; - const bool numeric_limits<float>::is_integer; - const bool numeric_limits<float>::is_exact; - const int numeric_limits<float>::radix; - const int numeric_limits<float>::min_exponent; - const int numeric_limits<float>::min_exponent10; - const int numeric_limits<float>::max_exponent; - const int numeric_limits<float>::max_exponent10; - const bool numeric_limits<float>::has_infinity; - const bool numeric_limits<float>::has_quiet_NaN; - const bool numeric_limits<float>::has_signaling_NaN; - const float_denorm_style numeric_limits<float>::has_denorm; - const bool numeric_limits<float>::has_denorm_loss; - const bool numeric_limits<float>::is_iec559; - const bool numeric_limits<float>::is_bounded; - const bool numeric_limits<float>::is_modulo; - const bool numeric_limits<float>::traps; - const bool numeric_limits<float>::tinyness_before; - const float_round_style numeric_limits<float>::round_style; - - const bool numeric_limits<double>::is_specialized; - const int numeric_limits<double>::digits; - const int numeric_limits<double>::digits10; - const bool numeric_limits<double>::is_signed; - const bool numeric_limits<double>::is_integer; - const bool numeric_limits<double>::is_exact; - const int numeric_limits<double>::radix; - const int numeric_limits<double>::min_exponent; - const int numeric_limits<double>::min_exponent10; - const int numeric_limits<double>::max_exponent; - const int numeric_limits<double>::max_exponent10; - const bool numeric_limits<double>::has_infinity; - const bool numeric_limits<double>::has_quiet_NaN; - const bool numeric_limits<double>::has_signaling_NaN; - const float_denorm_style numeric_limits<double>::has_denorm; - const bool numeric_limits<double>::has_denorm_loss; - const bool numeric_limits<double>::is_iec559; - const bool numeric_limits<double>::is_bounded; - const bool numeric_limits<double>::is_modulo; - const bool numeric_limits<double>::traps; - const bool numeric_limits<double>::tinyness_before; - const float_round_style numeric_limits<double>::round_style; - - const bool numeric_limits<long double>::is_specialized; - const int numeric_limits<long double>::digits; - const int numeric_limits<long double>::digits10; - const bool numeric_limits<long double>::is_signed; - const bool numeric_limits<long double>::is_integer; - const bool numeric_limits<long double>::is_exact; - const int numeric_limits<long double>::radix; - const int numeric_limits<long double>::min_exponent; - const int numeric_limits<long double>::min_exponent10; - const int numeric_limits<long double>::max_exponent; - const int numeric_limits<long double>::max_exponent10; - const bool numeric_limits<long double>::has_infinity; - const bool numeric_limits<long double>::has_quiet_NaN; - const bool numeric_limits<long double>::has_signaling_NaN; - const float_denorm_style numeric_limits<long double>::has_denorm; - const bool numeric_limits<long double>::has_denorm_loss; - const bool numeric_limits<long double>::is_iec559; - const bool numeric_limits<long double>::is_bounded; - const bool numeric_limits<long double>::is_modulo; - const bool numeric_limits<long double>::traps; - const bool numeric_limits<long double>::tinyness_before; - const float_round_style numeric_limits<long double>::round_style; -} // namespace std - - diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in index b09f33d2539..c9e86872504 100644 --- a/libstdc++-v3/testsuite/Makefile.in +++ b/libstdc++-v3/testsuite/Makefile.in @@ -76,6 +76,7 @@ CCODECVT_H = @CCODECVT_H@ CLOCALE_H = @CLOCALE_H@ CMESSAGES_H = @CMESSAGES_H@ CPP = @CPP@ +CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@ CSHADOW_FLAGS = @CSHADOW_FLAGS@ CSTDIO_H = @CSTDIO_H@ CXX = @CXX@ @@ -106,7 +107,6 @@ LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ LIBTOOL = @LIBTOOL@ -LIMITS_INC_SRCDIR = @LIMITS_INC_SRCDIR@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ |