On Tue, Jul 17, 2018 at 1:35 PM Martin Liška <mli...@suse.cz> wrote: > > On 07/16/2018 06:09 PM, Nathan Sidwell wrote: > > On 07/16/2018 12:04 PM, Richard Biener wrote: > > > >> Just use a spare bit in function_decl, then we can simply stream it. > > > > If there's one, then sure. (you've reminded me that there are a bunch of > > mutually disjoint flags in function_decl that could be collapsed to an > > enumeration. This may be another such bit.) > > There wasn't, but I was able to stole one unused (tm_clone_flag). About > mutual disjoint, I believe following 3 can be > an enum:
Well, /* No bits left. */ is a lie on 64bit hosts. There's actually 32bits left on those ;) Similar in tree_decl_with_vis which _does_ have 14 unused bits left. So we could shrink FUNCTION_DECLs by 8 bytes by moving the function-decl flags to decl_with_vis inside sth like union { struct { .... } function_decl_bits; } u; if we ever choose to have other decl_with_vis nodes have flags. But yes, the function_decl_bits part would then be all taken. OTOH decl_with_vis already has a lot of FUNCTION_DECL-only flags already. Care to move the bits? > unsigned static_ctor_flag : 1; > unsigned static_dtor_flag : 1; > unsigned lambda_function: 1; > > I'm attaching patch candidate, is the location where I set the flag correct? > Do I miss any other location where that should be set? > Thanks, > Martin > > > > > nathan > > >