-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?

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;

Reply via email to