On Tue, 20 Dec 2022, Qing Zhao wrote: > Hi, > > This is the patch for mentioning -fstrict-flex-arrays and -Warray-bounds=2 > changes in gcc-13/changes.html. > > Let me know if you have any comment or suggestions.
Some copy editing below > Thanks. > > Qing. > > ======================================= > From c022076169b4f1990b91f7daf4cc52c6c5535228 Mon Sep 17 00:00:00 2001 > From: Qing Zhao <qing.z...@oracle.com> > Date: Tue, 20 Dec 2022 16:13:04 +0000 > Subject: [PATCH] gcc-13/changes: Mention -fstrict-flex-arrays and its impact. > > --- > htdocs/gcc-13/changes.html | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/htdocs/gcc-13/changes.html b/htdocs/gcc-13/changes.html > index 689178f9..47b3d40f 100644 > --- a/htdocs/gcc-13/changes.html > +++ b/htdocs/gcc-13/changes.html > @@ -39,6 +39,10 @@ a work-in-progress.</p> > <li>Legacy debug info compression option <code>-gz=zlib-gnu</code> was > removed > and the option is ignored right now.</li> > <li>New debug info compression option value <code>-gz=zstd</code> has > been added.</li> > + <li><code>-Warray-bounds=2</code> will no longer issue warnings for out > of bounds > + accesses to trailing struct members of one-element array type anymore. > Please > + add <code>-fstrict-flex-arrays=level</code> to control how the > compiler treat > + trailing arrays of structures as flexible array members. </li> "Instead it diagnoses accesses to trailing arrays according to <code>-fstrict-flex-arrays</code>." > </ul> > > > @@ -409,6 +413,17 @@ a work-in-progress.</p> > <h2>Other significant improvements</h2> > > <!-- <h3 id="uninitialized">Eliminating uninitialized variables</h3> --> > +<h3 id="flexible array">Treating trailing arrays as flexible array > members</h3> > + > +<ul> > + <li>GCC can now control when to treat the trailing array of a structure as > a > + flexible array member for the purpose of accessing the elements of such > + an array. By default, all trailing arrays of structures are treated as all trailing arrays in aggregates are treated > + flexible array members. Use the new command-line option > + <code>-fstrict-flex-array=level</code> to control how GCC treats the > trailing > + array of a structure as a flexible array member at different levels. <code>-fstrict-flex-arrays</code> to control which trailing array members are streated as flexible arrays. I've also just now noticed that there's now a flag_strict_flex_arrays check in the middle-end (in array bound diagnostics) but this option isn't streamed or handled with LTO. I think you want to replace that with the appropriate DECL_NOT_FLEXARRAY check. We might also want to see how inlining accesses from TUs with different -fstrict-flex-arrays setting behaves when accessing the same structure (and whether we might want to issue an ODR style diagnostic there). Thanks, Richard.