re PR c++/13275 (Implementation of offsetof macro)
authorMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 16 Dec 2003 16:09:23 +0000 (16:09 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 16 Dec 2003 16:09:23 +0000 (16:09 +0000)
commit263ee052390366c2476124b43a53cec7e5540187
tree2b4a4284864e77f0905c40d1a718bb9eb360f8ac
parentff5034c5be89c496e39b79b52cd496130c51fdb2
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
12 files changed:
gcc/ChangeLog
gcc/c-common.h
gcc/c-parse.in
gcc/cp/ChangeLog
gcc/cp/lex.c
gcc/cp/parser.c
gcc/doc/extend.texi
gcc/ginclude/stddef.h
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/offsetof2.C
gcc/testsuite/g++.dg/parse/offsetof1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/parse/offsetof2.C [new file with mode: 0644]