P0683R1 - default member initializers for bit-fields
commit811c4f15ae872df6c455c4c7d17d3b17f7daa81c
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 Sep 2017 17:53:50 +0000 (29 17:53 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 Sep 2017 17:53:50 +0000 (29 17:53 +0000)
treefcd62b99968f8938843ab7d38f586f9001aece90
parent52f26f82114c4bc4376627d341f61d855ec6ea0f
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@253302 138bc75d-0d04-0410-961f-82ee72b054a4
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]