summaryrefslogtreecommitdiff
path: root/gcc/c-parse.in
diff options
context:
space:
mode:
authorMark Mitchell <mmitchel@gcc.gnu.org>2003-12-16 16:09:23 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2003-12-16 16:09:23 +0000
commit263ee052390366c2476124b43a53cec7e5540187 (patch)
tree2b4a4284864e77f0905c40d1a718bb9eb360f8ac /gcc/c-parse.in
parentff5034c5be89c496e39b79b52cd496130c51fdb2 (diff)
downloadgcc-263ee052390366c2476124b43a53cec7e5540187.tar.gz
re PR c++/13275 (Implementation of offsetof macro)
PR c++/13275 * c-common.h (enum rid): Add RID_OFFSETOF. * c-parser.in (rid_to_yy): Ignore RID_OFFSETOF. * ginclude/stddef.h (offsetof): Reimplement for C++, using __offsetof__. * doc/extend.texi: Document __offsetof__. PR c++/13275 * lex.c (reswords): Add "__offsetof" and "__offsetof__". * parser.c (cp_parser): Add in_offsetof_p. (cp_parser_new): Initialize it. (cp_parser_primary_expression): Handle __offsetof__ (...). (cp_parser_postfix_expression): Allow casts to pointer type and uses of "->" in a constant expression if implementing offsetof. (cp_parser_unary_expression): Allow the use of "&" in a constant expression if implementing offsetof. PR c++/13275 * g++.dg/other/offsetof2.C: Remove XFAIL. * g++.dg/parse/offsetof1.C: New test. * g++.gd/parse/offsetof2.C: Likewise. From-SVN: r74702
Diffstat (limited to 'gcc/c-parse.in')
-rw-r--r--gcc/c-parse.in1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/c-parse.in b/gcc/c-parse.in
index b36ab06524a..954c37067ff 100644
--- a/gcc/c-parse.in
+++ b/gcc/c-parse.in
@@ -3484,6 +3484,7 @@ static const short rid_to_yy[RID_MAX] =
/* RID_FALSE */ 0,
/* RID_NAMESPACE */ 0,
/* RID_NEW */ 0,
+ /* RID_OFFSETOF */ 0,
/* RID_OPERATOR */ 0,
/* RID_THIS */ 0,
/* RID_THROW */ 0,