On Mon, 25 Sep 2023, Tobias Burnus wrote: > Hi all, > > I stumbled over this as I found the wording in the release notes rather > unclear.is. > > > First, the following gives only a -pedantic warning and not a > -Wflex-array-member-not-at-end: > > struct t { int b; int x[]; }; > struct q { int b; struct t a[2]; int c; }; > > warning: invalid use of structure with flexible array member [-Wpedantic] > > If I remove the "[2]", it shows additionally: > warning: structure containing a flexible array member is not at the end of > another structure [-Wflex-array-member-not-at-end] > > It seems as if it should print latter warning also inside the struct. > > Qing? Joseph? Thoughts?
I think an array element with a flex array is invalid and this is what is diagnosed here. Maybe it should say ' as array element' > * * * > > Secondly, if this is deprecated, shouldn't then the warning enabled by, e.g., > -Wall or made > otherwise more prominent? (-std=?) - Currently, one either has to find the new > flag or use > -pedantic. > > Or is this not really regarded as deprecated? But then (IMHO) we should not > really claim so and just > add the warning without deprecation. > > BTW; clang-15 prints the -Wgnu-variable-sized-type-not-at-end warning by > default. > > Joseph, all: Thoughts? > > * * * > > Cross ref: The patch adding the new warning is r14-2197-g070a6bf0bdc6761 > https://gcc.gnu.org/pipermail/gcc-cvs/2023-June/385730.html (cf. previously in > this thread) > > > * * * > > Regarding the changes.html wording: > > On 07.08.23 16:22, Qing Zhao via Gcc-patches wrote: > > > Comparing to the 1st version, the only change is to address Richard's > > comment on refering a warning option for diagnosing deprecated behavior. > ... > > +++ b/htdocs/gcc-14/changes.html > > @@ -30,7 +30,18 @@ a work-in-progress.</p> > > <!-- .................................................................. > > --> > > <h2>Caveats</h2> > > <ul> > > - <li>...</li> > > + <li><strong>C:</strong> > > + Support for the GCC extension, a structure containing a C99 flexible > > array > > + member, or a union containing such a structure, is not the last field > > of > > + another structure, is deprecated. Refer to > > + <a href="https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html"> > > + Zero Length Arrays</a>. > > ... > > I find the first sentence difficult to read. What do you think of the > following? > (It is hard to come up with some good wording.) > > --- a/htdocs/gcc-14/changes.html > +++ b/htdocs/gcc-14/changes.html > @@ -31,9 +31,10 @@ a work-in-progress.</p> > <h2>Caveats</h2> > <ul> > <li><strong>C:</strong> > - Support for the GCC extension, a structure containing a C99 flexible > array > - member, or a union containing such a structure, is not the last field > of > - another structure, is deprecated. Refer to > + Support for the GCC extension that a structure containing a C99 > flexible > + array (and any union containing a member of such structure) can be a > + member of a structure has been deprecated for the case that it is not > + the last member. Refer to > <a href="https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html"> > Zero Length Arrays</a>. > Any code relying on this extension should be modifed to ensure that > > > Tobias > > PS: C17 has: > "A structure or union shall not contain a member with incomplete or function > type (hence, a structure > shall not contain an instance of itself, but may contain a pointer to an > instance of itself), except that > the last member of a structure with more than one named member may have > incomplete array type; > such a structure (and any union containing, possibly recursively, a member > that is such a structure) > shall not be a member of a structure or an element of an array." > > ----------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra?e 201, 80634 > M?nchen; Gesellschaft mit beschr?nkter Haftung; Gesch?ftsf?hrer: Thomas > Heurung, Frank Th?rauf; Sitz der Gesellschaft: M?nchen; Registergericht > M?nchen, HRB 106955 > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)