diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2012-10-06 23:06:04 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2012-10-06 23:06:04 +0000 |
commit | a2ca8577e6c88866838fe89c82b8d2c492ad7a59 (patch) | |
tree | 244b72d26d12f547c33a38c2cb79580c6bb8ed17 /gcc | |
parent | 21c278c93069690772a23f9c162eeac0030b10f7 (diff) | |
download | gcc-a2ca8577e6c88866838fe89c82b8d2c492ad7a59.zip gcc-a2ca8577e6c88866838fe89c82b8d2c492ad7a59.tar.gz gcc-a2ca8577e6c88866838fe89c82b8d2c492ad7a59.tar.bz2 |
re PR c++/52764 (Including <cstdint> after <stdint.h> fails to define limit macros)
2012-10-06 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/52764
* ginclude/stdint-wrap.h: In C++11 if __STDC_HOSTED__ define
__STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS.
* ginclude/stdint-gcc.h: In C++11 unconditionally define
limit and constant macros.
/testsuite
2012-10-06 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/52764
* g++.dg/cpp0x/stdint.C: New.
/libstdc++-v3
2012-10-06 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/52764
* include/c_global/cstdint: Remove __STDC_LIMIT_MACROS and
__STDC_CONSTANT_MACROS related macros.
From-SVN: r192174
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ginclude/stdint-gcc.h | 14 | ||||
-rw-r--r-- | gcc/ginclude/stdint-wrap.h | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/stdint.C | 135 |
5 files changed, 163 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a198490..c80b5e0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2012-10-06 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/52764 + * ginclude/stdint-wrap.h: In C++11 if __STDC_HOSTED__ define + __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS. + * ginclude/stdint-gcc.h: In C++11 unconditionally define + limit and constant macros. + +2012-10-06 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/54249 * ginclude/stddef.h: In C++11 mode declare nullptr_t in the global namespace. diff --git a/gcc/ginclude/stdint-gcc.h b/gcc/ginclude/stdint-gcc.h index 22780a1..64b3899 100644 --- a/gcc/ginclude/stdint-gcc.h +++ b/gcc/ginclude/stdint-gcc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2008, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2008-2012 Free Software Foundation, Inc. This file is part of GCC. @@ -91,7 +91,8 @@ typedef __UINTPTR_TYPE__ uintptr_t; typedef __INTMAX_TYPE__ intmax_t; typedef __UINTMAX_TYPE__ uintmax_t; -#if !defined __cplusplus || defined __STDC_LIMIT_MACROS +#if (!defined __cplusplus || __cplusplus >= 201103L \ + || defined __STDC_LIMIT_MACROS) /* 7.18.2 Limits of specified-width integer types */ @@ -229,9 +230,11 @@ typedef __UINTMAX_TYPE__ uintmax_t; #undef WINT_MIN #define WINT_MIN __WINT_MIN__ -#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */ +#endif /* (!defined __cplusplus || __cplusplus >= 201103L + || defined __STDC_LIMIT_MACROS) */ -#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS +#if (!defined __cplusplus || __cplusplus >= 201103L \ + || defined __STDC_CONSTANT_MACROS) #undef INT8_C #define INT8_C(c) __INT8_C(c) @@ -254,6 +257,7 @@ typedef __UINTMAX_TYPE__ uintmax_t; #undef UINTMAX_C #define UINTMAX_C(c) __UINTMAX_C(c) -#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */ +#endif /* (!defined __cplusplus || __cplusplus >= 201103L + || defined __STDC_CONSTANT_MACROS) */ #endif /* _GCC_STDINT_H */ diff --git a/gcc/ginclude/stdint-wrap.h b/gcc/ginclude/stdint-wrap.h index e45f819..83b6f70 100644 --- a/gcc/ginclude/stdint-wrap.h +++ b/gcc/ginclude/stdint-wrap.h @@ -1,5 +1,11 @@ #ifndef _GCC_WRAP_STDINT_H #if __STDC_HOSTED__ +# if defined __cplusplus && __cplusplus >= 201103L +# undef __STDC_LIMIT_MACROS +# define __STDC_LIMIT_MACROS +# undef __STDC_CONSTANT_MACROS +# define __STDC_CONSTANT_MACROS +# endif # include_next <stdint.h> #else # include "stdint-gcc.h" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 24a28b0..9114655 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2012-10-06 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/52764 + * g++.dg/cpp0x/stdint.C: New. + +2012-10-06 Paolo Carlini <paolo.carlini@oracle.com> + PR c++/54249 * g++.dg/cpp0x/stddef.C: New. diff --git a/gcc/testsuite/g++.dg/cpp0x/stdint.C b/gcc/testsuite/g++.dg/cpp0x/stdint.C new file mode 100644 index 0000000..434d458 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/stdint.C @@ -0,0 +1,135 @@ +// PR c++/52764 +// { dg-require-effective-target stdint_types } +// { dg-do compile { target c++11 } } + +#include <stdint.h> + +#ifdef __INT8_TYPE__ +# if (!defined INT8_MAX \ + || !defined INT8_MIN) +# error +# endif +#endif +#ifdef __UINT8_TYPE__ +# if !defined UINT8_MAX +# error +# endif +#endif +#ifdef __INT16_TYPE__ +# if (!defined INT16_MAX \ + || !defined INT16_MIN) +# error +# endif +#endif +#ifdef __UINT16_TYPE__ +# if !defined UINT16_MAX +# error +# endif +#endif +#ifdef __INT32_TYPE__ +# if (!defined INT32_MAX \ + || !defined INT32_MIN) +# error +# endif +#endif +#ifdef __UINT32_TYPE__ +# if !defined UINT32_MAX +# error +# endif +#endif +#ifdef __INT64_TYPE__ +# if (!defined INT64_MAX \ + || !defined INT64_MIN) +# error +# endif +#endif +#ifdef __UINT64_TYPE__ +# if !defined UINT64_MAX +# error +# endif +#endif + +#if (!defined INT_LEAST8_MAX \ + || !defined INT_LEAST8_MIN \ + || !defined UINT_LEAST8_MAX \ + || !defined INT_LEAST16_MAX \ + || !defined INT_LEAST16_MIN \ + || !defined UINT_LEAST16_MAX \ + || !defined INT_LEAST32_MAX \ + || !defined INT_LEAST32_MIN \ + || !defined UINT_LEAST32_MAX \ + || !defined INT_LEAST64_MAX \ + || !defined INT_LEAST64_MIN \ + || !defined UINT_LEAST64_MAX) +#error +#endif + +#if (!defined INT_FAST8_MAX \ + || !defined INT_FAST8_MIN \ + || !defined UINT_FAST8_MAX \ + || !defined INT_FAST16_MAX \ + || !defined INT_FAST16_MIN \ + || !defined UINT_FAST16_MAX \ + || !defined INT_FAST32_MAX \ + || !defined INT_FAST32_MIN \ + || !defined UINT_FAST32_MAX \ + || !defined INT_FAST64_MAX \ + || !defined INT_FAST64_MIN \ + || !defined UINT_FAST64_MAX) +#error +#endif + +#ifdef __INTPTR_TYPE__ +# if (!defined INTPTR_MAX \ + || !defined INTPTR_MIN) +# error +# endif +#endif +#ifdef __UINTPTR_TYPE__ +# if !defined UINTPTR_MAX +# error +# endif +#endif + +#if (!defined INTMAX_MAX \ + || !defined INTMAX_MIN \ + || !defined UINTMAX_MAX) +#error +#endif + +#if (!defined PTRDIFF_MAX \ + || !defined PTRDIFF_MIN) +#error +#endif + +#if (!defined SIG_ATOMIC_MAX \ + || !defined SIG_ATOMIC_MIN) +#error +#endif + +#if !defined SIZE_MAX +#error +#endif + +#if (!defined WCHAR_MAX \ + || !defined WCHAR_MIN) +#error +#endif + +#if (!defined WINT_MAX \ + || !defined WINT_MIN) +#error +#endif + +#if (!defined INT8_C \ + || !defined INT16_C \ + || !defined INT32_C \ + || !defined INT64_C \ + || !defined UINT8_C \ + || !defined UINT16_C \ + || !defined UINT32_C \ + || !defined UINT64_C \ + || !defined INTMAX_C \ + || !defined UINTMAX_C) +#error +#endif |