aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Edelsohn <dje.gcc@gmail.com>2021-04-29 14:44:01 -0400
committerDavid Edelsohn <dje.gcc@gmail.com>2021-04-30 12:48:11 -0400
commitdc4202bd24fcc13dab80c4520cb53a2302c49929 (patch)
tree46e0b7132621a00b1086ee1b7b1ee96005efb68d /gcc
parentd9398dd2902a0142fa3b493cf61a340f1f5ab46f (diff)
downloadgcc-dc4202bd24fcc13dab80c4520cb53a2302c49929.zip
gcc-dc4202bd24fcc13dab80c4520cb53a2302c49929.tar.gz
gcc-dc4202bd24fcc13dab80c4520cb53a2302c49929.tar.bz2
middle-end: Disable section anchors for VAR_DECLs if -fdata-sections
-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. gcc/ChangeLog: * varasm.c (use_blocks_for_decl_p): Don't use section anchors for VAR_DECLs if -fdata-sections enabled.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/varasm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 3ecf9e0..ac256ef 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;