diff options
| author | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-24 15:30:37 +0000 |
|---|---|---|
| committer | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-24 15:30:37 +0000 |
| commit | 3a47b66be0bd7d293c8337e74aecdb95abe4fcb8 (patch) | |
| tree | 0e20c06d9c4524d1e9acb4a0a01a1f9474f0fd26 | |
| parent | 065aeb1988efa9334bfb78b762ad2477ea1e371f (diff) | |
| download | ppe42-gcc-3a47b66be0bd7d293c8337e74aecdb95abe4fcb8.tar.gz ppe42-gcc-3a47b66be0bd7d293c8337e74aecdb95abe4fcb8.zip | |
* c-parse.in (array_declarator): Use expr_no_commas.
Fixes PR c/11943.
testsuite:
* gcc.dg/c99-arraydecl-2.c: New test. PR c/11943.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72900 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/c-parse.in | 6 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.dg/c99-arraydecl-2.c | 16 |
4 files changed, 28 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 19ab2eda3b6..445a0062d2b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-10-24 Joseph S. Myers <jsm@polyomino.org.uk> + + * c-parse.in (array_declarator): Use expr_no_commas. + Fixes PR c/11943. + 2003-10-24 Richard Sandiford <rsandifo@redhat.com> * config/mips/linux.h: Wrap MD_FALLBACK_FRAME_STATE_FOR and diff --git a/gcc/c-parse.in b/gcc/c-parse.in index c7850177cb4..22bab99077a 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -1973,16 +1973,16 @@ direct_absdcl1: /* The [...] part of a declarator for an array type. */ array_declarator: - '[' maybe_type_quals_attrs expr ']' + '[' maybe_type_quals_attrs expr_no_commas ']' { $$ = build_array_declarator ($3, $2, 0, 0); } | '[' maybe_type_quals_attrs ']' { $$ = build_array_declarator (NULL_TREE, $2, 0, 0); } | '[' maybe_type_quals_attrs '*' ']' { $$ = build_array_declarator (NULL_TREE, $2, 0, 1); } - | '[' STATIC maybe_type_quals_attrs expr ']' + | '[' STATIC maybe_type_quals_attrs expr_no_commas ']' { $$ = build_array_declarator ($4, $3, 1, 0); } /* declspecs_nosc_nots is a synonym for type_quals_attrs. */ - | '[' declspecs_nosc_nots STATIC expr ']' + | '[' declspecs_nosc_nots STATIC expr_no_commas ']' { $$ = build_array_declarator ($4, $2, 1, 0); } ; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7a56993777c..dd43b9363b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-10-24 Joseph S. Myers <jsm@polyomino.org.uk> + + * gcc.dg/c99-arraydecl-2.c: New test. PR c/11943. + 2003-10-24 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> PR c++/11076 diff --git a/gcc/testsuite/gcc.dg/c99-arraydecl-2.c b/gcc/testsuite/gcc.dg/c99-arraydecl-2.c new file mode 100644 index 00000000000..e2085e1a186 --- /dev/null +++ b/gcc/testsuite/gcc.dg/c99-arraydecl-2.c @@ -0,0 +1,16 @@ +/* Test for C99 array declarators: expression must be an + assignment-expression. PR 11943. */ +/* Origin: Joseph Myers <jsm@polyomino.org.uk> */ +/* { dg-do compile } */ +/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ + +void +foo (void) +{ + int a[2, 3]; /* { dg-error "parse|syntax" "bad array declarator" } */ + void b(int x[2, 3]); /* { dg-error "parse|syntax" "bad array declarator" } */ + void c(int [2, 3]); /* { dg-error "parse|syntax" "bad array declarator" } */ + void d(int *x[restrict 2, 3]); /* { dg-error "parse|syntax" "bad array declarator" } */ + void e(int *x[static restrict 2, 3]); /* { dg-error "parse|syntax" "bad array declarator" } */ + void f(int *x[restrict static 2, 3]); /* { dg-error "parse|syntax" "bad array declarator" } */ +} |

