diff options
author | Giovanni Bajo <giovannibajo@gcc.gnu.org> | 2004-06-01 10:22:11 +0000 |
---|---|---|
committer | Giovanni Bajo <giovannibajo@gcc.gnu.org> | 2004-06-01 10:22:11 +0000 |
commit | 07166901ad64e6c3d8c85ee1d54613bd662ff603 (patch) | |
tree | b34d0c7e367f29411b18f33909927293883456a5 | |
parent | 1ec4e9c30bd66dab3fabb6958187be4c57e26052 (diff) | |
download | gcc-07166901ad64e6c3d8c85ee1d54613bd662ff603.zip gcc-07166901ad64e6c3d8c85ee1d54613bd662ff603.tar.gz gcc-07166901ad64e6c3d8c85ee1d54613bd662ff603.tar.bz2 |
re PR c++/14932 (cannot use offsetof to get offsets of array elements in g++ 3.4.0 prerelease)
PR c++/14932
* parser.c (cp_parser_postfix_expression): Allow subscript
operator in offsetof.
PR c++/14932
* g++.dg/parse/offsetof4.C: New test.
From-SVN: r82538
-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 4549203..850f211 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 f98de0c93..fa05012 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 0c34a57..02e066d 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 0000000..ba05148 --- /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]); |