David Edelsohn via Gcc-patches <gcc-patches@gcc.gnu.org> writes: > -fdata-sections places data symbols into their own, unique, named > sections. > -fsection-anchors create an anchor to access neighboring symbols > within a section. > > When both are enabled, a separate section anchor is created for each > symbol, which provides no benefit. > > This patch updates the common gating function use_blocks_for_decl_p() to > return false if -fdata-sections is enabled. Constants still can > be placed into > object blocks because constants use a separate, different gating function. > > Bootstrapped on powerpc-ibm-aix7.2.3.0 > > Okay?
Yes, thanks. Richard > Thanks, David > > gcc/ChangeLog: > > * varasm.c (use_blocks_for_decl_p): Don't use section anchors > for VAR_DECLs if -fdata-sections enabled. > > diff --git a/gcc/varasm.c b/gcc/varasm.c > index 3ecf9e039bb..ac256ef65e5 100644 > --- a/gcc/varasm.c > +++ b/gcc/varasm.c > @@ -1340,6 +1340,12 @@ use_blocks_for_decl_p (tree decl) > { > struct symtab_node *snode; > > + /* Don't create object blocks if each DECL is placed into a separate > + section because that will uselessly create a section anchor for > + each DECL. */ > + if (flag_data_sections) > + return false; > + > /* Only data DECLs can be placed into object blocks. */ > if (!VAR_P (decl) && TREE_CODE (decl) != CONST_DECL) > return false;