re PR c++/49803 ([C++0x] erroneous variant-member initialization in a union containing an anonymous struct)
PR c++/49803 * init.c (sort_mem_initializers): Initialize uses_unions_p here. (build_field_list): Not here. From-SVN: r177213
This commit is contained in:
parent
9f8139900d
commit
adc651f305
|
@ -1,5 +1,9 @@
|
||||||
2011-08-02 Jason Merrill <jason@redhat.com>
|
2011-08-02 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
PR c++/49803
|
||||||
|
* init.c (sort_mem_initializers): Initialize uses_unions_p here.
|
||||||
|
(build_field_list): Not here.
|
||||||
|
|
||||||
PR c++/49834
|
PR c++/49834
|
||||||
* parser.c (build_range_temp): Split out from...
|
* parser.c (build_range_temp): Split out from...
|
||||||
(cp_convert_range_for): ...here.
|
(cp_convert_range_for): ...here.
|
||||||
|
|
|
@ -655,8 +655,6 @@ build_field_list (tree t, tree list, int *uses_unions_p)
|
||||||
{
|
{
|
||||||
tree fields;
|
tree fields;
|
||||||
|
|
||||||
*uses_unions_p = 0;
|
|
||||||
|
|
||||||
/* Note whether or not T is a union. */
|
/* Note whether or not T is a union. */
|
||||||
if (TREE_CODE (t) == UNION_TYPE)
|
if (TREE_CODE (t) == UNION_TYPE)
|
||||||
*uses_unions_p = 1;
|
*uses_unions_p = 1;
|
||||||
|
@ -710,7 +708,7 @@ sort_mem_initializers (tree t, tree mem_inits)
|
||||||
tree next_subobject;
|
tree next_subobject;
|
||||||
VEC(tree,gc) *vbases;
|
VEC(tree,gc) *vbases;
|
||||||
int i;
|
int i;
|
||||||
int uses_unions_p;
|
int uses_unions_p = 0;
|
||||||
|
|
||||||
/* Build up a list of initializations. The TREE_PURPOSE of entry
|
/* Build up a list of initializations. The TREE_PURPOSE of entry
|
||||||
will be the subobject (a FIELD_DECL or BINFO) to initialize. The
|
will be the subobject (a FIELD_DECL or BINFO) to initialize. The
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-08-02 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
PR c++/49803
|
||||||
|
* g++.dg/cpp0x/union5.C: New.
|
||||||
|
|
||||||
2011-08-02 Daniel Kraft <d@domob.eu>
|
2011-08-02 Daniel Kraft <d@domob.eu>
|
||||||
|
|
||||||
PR fortran/49885
|
PR fortran/49885
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
// PR c++/49803
|
||||||
|
// { dg-options -std=c++0x }
|
||||||
|
|
||||||
|
struct X
|
||||||
|
{
|
||||||
|
X() = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
union Y
|
||||||
|
{
|
||||||
|
// N3291=11-0061 12.6.2/8 says no initialization of
|
||||||
|
// of other variant members (i.e. m_x) should
|
||||||
|
// be performed.
|
||||||
|
Y() : m_char1{ }
|
||||||
|
{ }
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
char m_char1;
|
||||||
|
};
|
||||||
|
|
||||||
|
X m_x;
|
||||||
|
};
|
Loading…
Reference in New Issue