From: tromey Date: Tue, 22 Jan 2008 21:43:49 +0000 (+0000) Subject: libcpp X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=a56d0856a42a94caa099400470cce1ab94bb612c;ds=sidebyside 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131743 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 31d39534dfa..255201a4f9f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-01-22 Tom Tromey + + PR c++/34859: + * gcc.dg/cpp/pr34859.c: New file. + 2008-01-22 Paul Thomas 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 00000000000..0fb90994ee3 --- /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 574e0541175..eb2a35cb088 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,9 @@ +2008-01-22 Tom Tromey + + PR c++/34859: + * macro.c (_cpp_create_definition): Handle __STDC_LIMIT_MACROS and + __STDC_CONSTANT_MACROS. + 2008-01-07 Fred Fish PR preprocessor/30363: diff --git a/libcpp/macro.c b/libcpp/macro.c index 754e2f77b90..3a3bf412724 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;