diff options
author | Joseph Myers <jsm@polyomino.org.uk> | 2004-02-11 23:50:45 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2004-02-11 23:50:45 +0000 |
commit | 32e8aa9af19ca5ba91539abc13017cd94778245c (patch) | |
tree | a6b7a99780e0752da0df83d39dc326af2f9b8261 | |
parent | 3b8e0c9129b0ed3fe2e4aa5bc466df5348e2d5fd (diff) | |
download | gcc-32e8aa9af19ca5ba91539abc13017cd94778245c.zip gcc-32e8aa9af19ca5ba91539abc13017cd94778245c.tar.gz gcc-32e8aa9af19ca5ba91539abc13017cd94778245c.tar.bz2 |
re PR c/456 (constant expressions constraints (gcc.dg/c90-const-expr-1))
PR c/456
* cppexp.c (num_binary_op): Don't allow comma operators in #if
constant expressions at all outside C99 mode if pedantic.
testsuite:
* gcc.dg/cpp/c90-if-comma-1.c, gcc.dg/cpp/c99-if-comma-1.c:
New tests.
From-SVN: r77676
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cppexp.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/c90-if-comma-1.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/c99-if-comma-1.c | 11 |
5 files changed, 36 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 22d06d6..6f2774b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-02-11 Joseph S. Myers <jsm@polyomino.org.uk> + + PR c/456 + * cppexp.c (num_binary_op): Don't allow comma operators in #if + constant expressions at all outside C99 mode if pedantic. + 2004-02-11 Uros Bizjak <uros@kss-loka.si> * optabs.h (enum optab_index): Add new OTI_log10 and OTI_log2. diff --git a/gcc/cppexp.c b/gcc/cppexp.c index c6f1f1d..5603f5b 100644 --- a/gcc/cppexp.c +++ b/gcc/cppexp.c @@ -1347,7 +1347,8 @@ num_binary_op (cpp_reader *pfile, cpp_num lhs, cpp_num rhs, enum cpp_ttype op) /* Comma. */ default: /* case CPP_COMMA: */ - if (CPP_PEDANTIC (pfile) && !pfile->state.skip_eval) + if (CPP_PEDANTIC (pfile) && (!CPP_OPTION (pfile, c99) + || !pfile->state.skip_eval)) cpp_error (pfile, CPP_DL_PEDWARN, "comma operator in operand of #if"); lhs = rhs; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7c1aa66..140302b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2004-02-11 Joseph S. Myers <jsm@polyomino.org.uk> + + PR c/456 + * gcc.dg/cpp/c90-if-comma-1.c, gcc.dg/cpp/c99-if-comma-1.c: New + tests. + 2004-02-11 Uros Bizjak <uros@kss-loka.si> * gcc.dg/builtins-33.c: New test. diff --git a/gcc/testsuite/gcc.dg/cpp/c90-if-comma-1.c b/gcc/testsuite/gcc.dg/cpp/c90-if-comma-1.c new file mode 100644 index 0000000..c00403f --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/c90-if-comma-1.c @@ -0,0 +1,11 @@ +/* Test for commas in constant expressions in #if: not permitted in C90 + but permitted in unevaluated subexpressions in C99. */ +/* Origin: Joseph Myers <jsm@polyomino.org.uk> */ +/* { dg-do preprocess } */ +/* { dg-options "-std=iso9899:1990 -pedantic-errors" } */ + +#if (1, 2) /* { dg-error "comma" "evaluated comma" } */ +#endif + +#if 1 || (1, 2) /* { dg-error "comma" "unevaluated comma" } */ +#endif diff --git a/gcc/testsuite/gcc.dg/cpp/c99-if-comma-1.c b/gcc/testsuite/gcc.dg/cpp/c99-if-comma-1.c new file mode 100644 index 0000000..cb8eb6f --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/c99-if-comma-1.c @@ -0,0 +1,11 @@ +/* Test for commas in constant expressions in #if: not permitted in C90 + but permitted in unevaluated subexpressions in C99. */ +/* Origin: Joseph Myers <jsm@polyomino.org.uk> */ +/* { dg-do preprocess } */ +/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ + +#if (1, 2) /* { dg-error "comma" "evaluated comma" } */ +#endif + +#if 1 || (1, 2) +#endif |