diff options
| author | giovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-01 10:22:11 +0000 |
|---|---|---|
| committer | giovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-01 10:22:11 +0000 |
| commit | ee8d5ba5e1bced681354891f5f2a9e3ebdbf3809 (patch) | |
| tree | b34d0c7e367f29411b18f33909927293883456a5 | |
| parent | d8b051596f210e345d8a12e160d5708d5a051560 (diff) | |
| download | ppe42-gcc-ee8d5ba5e1bced681354891f5f2a9e3ebdbf3809.tar.gz ppe42-gcc-ee8d5ba5e1bced681354891f5f2a9e3ebdbf3809.zip | |
PR c++/14932
* parser.c (cp_parser_postfix_expression): Allow subscript
operator in offsetof.
PR c++/14932
* g++.dg/parse/offsetof4.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82538 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/cp/parser.c | 8 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/g++.dg/parse/offsetof4.C | 13 |
4 files changed, 29 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4549203275b..850f211c77b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-06-01 Giovanni Bajo <giovannibajo@gcc.gnu.org> + + PR c++/14932 + * parser.c (cp_parser_postfix_expression): Allow subscript + operator in offsetof. + 2004-05-31 Mark Mitchell <mark@codesourcery.com> PR c++/15701 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index f98de0c93c9..fa050125d91 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -3781,9 +3781,11 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p) = grok_array_decl (postfix_expression, index); idk = CP_ID_KIND_NONE; /* Array references are not permitted in - constant-expressions. */ - if (cp_parser_non_integral_constant_expression - (parser, "an array reference")) + constant-expressions (but they are allowed + in offsetof). */ + if (!parser->in_offsetof_p + && cp_parser_non_integral_constant_expression + (parser, "an array reference")) postfix_expression = error_mark_node; } break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0c34a57a740..02e066d3795 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-06-01 Giovanni Bajo <giovannibajo@gcc.gnu.org> + + PR c++/14932 + * g++.dg/parse/offsetof4.C: New test. + 2004-06-01 Nicola Pero <nicola@brainstorm.co.uk> PR objc/7993 diff --git a/gcc/testsuite/g++.dg/parse/offsetof4.C b/gcc/testsuite/g++.dg/parse/offsetof4.C new file mode 100644 index 00000000000..ba051480d1d --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/offsetof4.C @@ -0,0 +1,13 @@ +// { dg-do compile } +// Contributed by Bill Helfinstine <bhelf at flitterfly dot whirpon dot com> +// PR c++/14932: Allow subscript operator in offsetof + +#include <cstddef> + +struct A +{ + int bar; + int foo[22]; +}; + +const int off = offsetof(A, foo[12]); |

