P0683R1 - default member initializers for bit-fields
authorJakub Jelinek <jakub@redhat.com>
Fri, 29 Sep 2017 17:53:50 +0000 (19:53 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 29 Sep 2017 17:53:50 +0000 (19:53 +0200)
commit603be0224edf653c1e38229e1d32ed449ffd23bd
treefcd62b99968f8938843ab7d38f586f9001aece90
parent7d386d45085cbe472089a8df4a2f033d9d5999a5
P0683R1 - default member initializers for bit-fields

P0683R1 - default member initializers for bit-fields
cp/
* cp-tree.h (grokbitfield): Add INIT parameter.
* parser.c (cp_parser_constant_expression): Add STRICT_P argument,
if true, parse a conditional-expression rather than
assignment-expression.
(cp_parser_member_declaration): For C++11 and later pass true
as STRICT_P to cp_parser_constant_expression.  Parse C++2A bitfield
NSDMIs.  Adjust grokbitfield caller.  Handle DECL_INITIAL also for
DECL_C_BIT_FIELDs.
(cp_parser_objc_class_ivars): Adjust grokbitfield caller.
* class.c (check_field_decl): Recurse even for DECL_C_BIT_FIELDs.
(check_field_decls): Call check_field_decl even for DECL_C_BIT_FIELDs.
* decl2.c (grokbitfield): Add INIT parameter, pass it to
cp_finish_decl.
* pt.c (tsubst_decl): Handle DECL_INITIAL for all FIELD_DECLs, not
just non-bitfields.
testsuite/
* g++.dg/ext/bitfield6.C: New test.
* g++.dg/cpp2a/bitfield1.C: New test.
* g++.dg/cpp2a/bitfield2.C: New test.
* g++.dg/cpp2a/bitfield3.C: New test.

From-SVN: r253302
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/cp-tree.h
gcc/cp/decl2.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp2a/bitfield1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp2a/bitfield2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp2a/bitfield3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/bitfield6.C [new file with mode: 0644]