diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2018-10-24 11:27:35 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2018-10-24 11:27:35 +0000 |
commit | dc6b6330c5d708ba319778b2befed0b7314271b8 (patch) | |
tree | 9ac6e997fc7dddbff9a6f78b9fd4c4e4b7715b61 /gcc/varasm.c | |
parent | 53b8a7107e6c6a774d5e69b8fd5ce46e94c35adb (diff) | |
download | gcc-dc6b6330c5d708ba319778b2befed0b7314271b8.zip gcc-dc6b6330c5d708ba319778b2befed0b7314271b8.tar.gz gcc-dc6b6330c5d708ba319778b2befed0b7314271b8.tar.bz2 |
Disable string merging with alignment > 1 before Solaris 11.4/SPARC
* configure.ac (gcc_cv_ld_aligned_shf_merge): New test.
* configure: Regenerate.
* config.in: Regenerate.
* varasm.c (mergeable_string_section): Use readonly_data_section
if linker doesn't support SHF_MERGE with alignment > 8.
(mergeable_constant_section): Likewise.
From-SVN: r265456
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r-- | gcc/varasm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c index 91650ee..06f41d0 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -823,6 +823,9 @@ mergeable_string_section (tree decl ATTRIBUTE_UNUSED, if (align < modesize) align = modesize; + if (!HAVE_LD_ALIGNED_SHF_MERGE && align > 8) + return readonly_data_section; + str = TREE_STRING_POINTER (decl); unit = GET_MODE_SIZE (mode); @@ -861,7 +864,8 @@ mergeable_constant_section (machine_mode mode ATTRIBUTE_UNUSED, && known_le (GET_MODE_BITSIZE (mode), align) && align >= 8 && align <= 256 - && (align & (align - 1)) == 0) + && (align & (align - 1)) == 0 + && (HAVE_LD_ALIGNED_SHF_MERGE ? 1 : align == 8)) { const char *prefix = function_mergeable_rodata_prefix (); char *name = (char *) alloca (strlen (prefix) + 30); |