diff options
author | David Edelsohn <dje.gcc@gmail.com> | 2021-04-29 14:44:01 -0400 |
---|---|---|
committer | David Edelsohn <dje.gcc@gmail.com> | 2021-04-30 12:48:11 -0400 |
commit | dc4202bd24fcc13dab80c4520cb53a2302c49929 (patch) | |
tree | 46e0b7132621a00b1086ee1b7b1ee96005efb68d /gcc/varasm.c | |
parent | d9398dd2902a0142fa3b493cf61a340f1f5ab46f (diff) | |
download | gcc-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/varasm.c')
-rw-r--r-- | gcc/varasm.c | 6 |
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; |