On Mon, Aug 15, 2022 at 3:29 PM Nathan Sidwell via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > On 8/2/22 10:44, Qing Zhao wrote: > > Hi, Nathan, > > > > I am adding a new bitfield “decl_not_flexarray” in “tree_decl_common” > > (gcc/tree-core.h) for the new gcc feature -fstrict-flex-arrays. > > > > ==== > > diff --git a/gcc/tree-core.h b/gcc/tree-core.h > > index ea9f281f1cc..458c6e6ceea 100644 > > --- a/gcc/tree-core.h > > +++ b/gcc/tree-core.h > > @@ -1813,7 +1813,10 @@ struct GTY(()) tree_decl_common { > > TYPE_WARN_IF_NOT_ALIGN. */ > > unsigned int warn_if_not_align : 6; > > > > - /* 14 bits unused. */ > > + /* In FIELD_DECL, this is DECL_NOT_FLEXARRAY. */ > > + unsigned int decl_not_flexarray : 1; > > Is it possible to invert the meaning here -- set the flag if it /IS/ a > flexible array? negated flags can be confusing, and I see your patch > sets it to '!is_flexible_array (...)' anyway?
The issue is it's consumed by the middle-end but set by a single (or two) frontends and the conservative setting is having the bit not set. That works nicely together with touching just the frontends that want stricter behavior than currently ... > > + > > + /* 13 bits unused. */ > > > > /* UID for points-to sets, stable over copying from inlining. */ > > unsigned int pt_uid; > > ==== > > > > (Please refer to the following for details: > > > > https://gcc.gnu.org/pipermail/gcc-patches/2022-July/598556.html > > https://gcc.gnu.org/pipermail/gcc-patches/2022-July/598965.html > > > > > ) > > > > Richard mentioned the following: > > > > "I've not seen it so you are probably missing it - the bit has to be > > streamed in tree-streamer-{in,out}.cc to be usable from LTO. Possibly > > C++ module streaming also needs to handle it.” > > > > I have figured out that where to add the handling of the bit in > > “tree-streamer-{in, out}.cc, > > However, it’s quite difficult for me to locate where should I add the > > handling of this new bit in > > C++ module streaming, could you please help me on this? > > > > > add it in to trees_{in,out}::core_bools. You could elide streaming for > non-FIELD_DECL decls. > > Hope that helps. > > nathan > > > > > Thanks a lot for your help. > > > > Qing > > > -- > Nathan Sidwell