Message ID | 6eeb9ea6-4b55-99be-06d4-aa141df2f9f2@oracle.com |
---|---|
State | New |
Headers | show |
Hi, gently pinging this. As you can see certainly isn't an high priority issue but resolving it one way or the other seems pretty simple... On 16/06/2017 15:47, Paolo Carlini wrote: > Hi, > > submitter and Manuel analyzed this a while ago and came to the > conclusion - which I think is still valid vs the current working draft > - that strictly speaking this kind of code violates [dcl.dcl], thus a > pedwarn seems more suited than a plain warning. The below one-liner, > suggested by Manuel at the time, passes testing on x86_64-linux > together with my testsuite changes. https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01193.html Thanks! Paolo.
Hi, gently pinging this. On 16/06/2017 15:47, Paolo Carlini wrote: > Hi, > > submitter and Manuel analyzed this a while ago and came to the > conclusion - which I think is still valid vs the current working draft > - that strictly speaking this kind of code violates [dcl.dcl], thus a > pedwarn seems more suited than a plain warning. The below one-liner, > suggested by Manuel at the time, passes testing on x86_64-linux > together with my testsuite changes. https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01193.html Thanks! Paolo.
On 09/15/2017 05:53 AM, Paolo Carlini wrote: > Hi, > > gently pinging this. > > On 16/06/2017 15:47, Paolo Carlini wrote: >> Hi, >> >> submitter and Manuel analyzed this a while ago and came to the >> conclusion - which I think is still valid vs the current working draft >> - that strictly speaking this kind of code violates [dcl.dcl], thus a >> pedwarn seems more suited than a plain warning. The below one-liner, >> suggested by Manuel at the time, passes testing on x86_64-linux >> together with my testsuite changes. > > https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01193.html Ok. class.union.anon has the member-specification as non-optional. nathan
Index: cp/decl2.c =================================================================== --- cp/decl2.c (revision 249233) +++ cp/decl2.c (working copy) @@ -1559,7 +1559,7 @@ finish_anon_union (tree anon_union_decl) return; if (main_decl == NULL_TREE) { - warning (0, "anonymous union with no members"); + pedwarn (input_location, 0, "anonymous union with no members"); return; } Index: testsuite/g++.dg/other/anon-union4.C =================================================================== --- testsuite/g++.dg/other/anon-union4.C (revision 0) +++ testsuite/g++.dg/other/anon-union4.C (working copy) @@ -0,0 +1,3 @@ +// PR c++/64644 + +static union { }; // { dg-error "anonymous union with no members" } Index: testsuite/g++.old-deja/g++.law/union4.C =================================================================== --- testsuite/g++.old-deja/g++.law/union4.C (revision 249233) +++ testsuite/g++.old-deja/g++.law/union4.C (working copy) @@ -10,4 +10,4 @@ static union { struct SS { int ss; }; -};// { dg-warning "no members" } +};// { dg-error "no members" } Index: testsuite/g++.old-deja/g++.other/anon1.C =================================================================== --- testsuite/g++.old-deja/g++.other/anon1.C (revision 249233) +++ testsuite/g++.old-deja/g++.other/anon1.C (working copy) @@ -3,4 +3,4 @@ static union { union { }; -}; // { dg-warning "" } anonymous union with no members +}; // { dg-error "" } anonymous union with no members