aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2008-01-22 21:43:49 +0000
committerTom Tromey <tromey@gcc.gnu.org>2008-01-22 21:43:49 +0000
commitec46053bfa418579cf557fa34b140ddd25f1717b (patch)
tree9982c212d99d03c4d7bd4ef933546ad3b4905e2d
parentc63173ddb02d9e703eaaa1256fa6a77db180782f (diff)
downloadgcc-ec46053bfa418579cf557fa34b140ddd25f1717b.zip
gcc-ec46053bfa418579cf557fa34b140ddd25f1717b.tar.gz
gcc-ec46053bfa418579cf557fa34b140ddd25f1717b.tar.bz2
re PR c++/34859 (g++ -D__STDC_LIMIT_MACROS -D__STDC_LIMIT_MACROS causes error)
libcpp PR c++/34859: * macro.c (_cpp_create_definition): Handle __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS. gcc/testsuite PR c++/34859: * gcc.dg/cpp/pr34859.c: New file. From-SVN: r131743
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/cpp/pr34859.c10
-rw-r--r--libcpp/ChangeLog6
-rw-r--r--libcpp/macro.c10
4 files changed, 29 insertions, 2 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 31d3953..255201a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-22 Tom Tromey <tromey@redhat.com>
+
+ PR c++/34859:
+ * gcc.dg/cpp/pr34859.c: New file.
+
2008-01-22 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34875
diff --git a/gcc/testsuite/gcc.dg/cpp/pr34859.c b/gcc/testsuite/gcc.dg/cpp/pr34859.c
new file mode 100644
index 0000000..0fb9099
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/pr34859.c
@@ -0,0 +1,10 @@
+/* PR c++/34859.
+ It is ok to redefine __STDC_CONSTANT_MACROS and __STDC_LIMIT_MACROS. */
+
+/* { dg-do preprocess } */
+
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_CONSTANT_MACROS 1
+
+#define __STDC_LIMIT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 574e054..eb2a35c 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,9 @@
+2008-01-22 Tom Tromey <tromey@redhat.com>
+
+ PR c++/34859:
+ * macro.c (_cpp_create_definition): Handle __STDC_LIMIT_MACROS and
+ __STDC_CONSTANT_MACROS.
+
2008-01-07 Fred Fish <fnf@specifix.com>
PR preprocessor/30363:
diff --git a/libcpp/macro.c b/libcpp/macro.c
index 754e2f7..3a3bf41 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -1,7 +1,7 @@
/* Part of CPP library. (Macro and #define handling.)
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007 Free Software Foundation, Inc.
+ 2006, 2007, 2008 Free Software Foundation, Inc.
Written by Per Bothner, 1994.
Based on CCCP program by Paul Rubin, June 1986
Adapted to ANSI C, Richard Stallman, Jan 1987
@@ -1696,7 +1696,13 @@ _cpp_create_definition (cpp_reader *pfile, cpp_hashnode *node)
node->type = NT_MACRO;
node->value.macro = macro;
if (! ustrncmp (NODE_NAME (node), DSC ("__STDC_"))
- && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_FORMAT_MACROS"))
+ && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_FORMAT_MACROS")
+ /* __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS are mentioned
+ in the C standard, as something that one must use in C++.
+ However DR#593 indicates that these aren't actually mentioned
+ in the C++ standard. We special-case them anyway. */
+ && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_LIMIT_MACROS")
+ && ustrcmp (NODE_NAME (node), (const uchar *) "__STDC_CONSTANT_MACROS"))
node->flags |= NODE_WARN;
return ok;