aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
diff options
context:
space:
mode:
authorArthur Eubanks <aeubanks@google.com>2024-02-15 13:50:26 -0700
committerGitHub <noreply@github.com>2024-02-15 12:50:26 -0800
commit5b51d45f496f10a74dea5a100cf18b33b45493dc (patch)
tree82f06ef121232350bb30d9a32d294b841c4f5b0e /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
parentd2c9a19dd8048801ef1d8238948c39ad4fcdcf95 (diff)
downloadllvm-5b51d45f496f10a74dea5a100cf18b33b45493dc.zip
llvm-5b51d45f496f10a74dea5a100cf18b33b45493dc.tar.gz
llvm-5b51d45f496f10a74dea5a100cf18b33b45493dc.tar.bz2
[X86] Use ".lrodata" prefix for large mergeable constants (#81900)
Otherwise with a small enough large-data-threshold, we can get .rodata.* sections marked large, making .rodata large in the final binary.
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
-rw-r--r--llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index 2c5b0b3..3cf59bc 100644
--- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -635,7 +635,8 @@ static SmallString<128>
getELFSectionNameForGlobal(const GlobalObject *GO, SectionKind Kind,
Mangler &Mang, const TargetMachine &TM,
unsigned EntrySize, bool UniqueSectionName) {
- SmallString<128> Name;
+ SmallString<128> Name =
+ getSectionPrefixForGlobal(Kind, TM.isLargeGlobalValue(GO));
if (Kind.isMergeableCString()) {
// We also need alignment here.
// FIXME: this is getting the alignment of the character, not the
@@ -643,13 +644,13 @@ getELFSectionNameForGlobal(const GlobalObject *GO, SectionKind Kind,
Align Alignment = GO->getParent()->getDataLayout().getPreferredAlign(
cast<GlobalVariable>(GO));
- std::string SizeSpec = ".rodata.str" + utostr(EntrySize) + ".";
- Name = SizeSpec + utostr(Alignment.value());
+ Name += ".str";
+ Name += utostr(EntrySize);
+ Name += ".";
+ Name += utostr(Alignment.value());
} else if (Kind.isMergeableConst()) {
- Name = ".rodata.cst";
+ Name += ".cst";
Name += utostr(EntrySize);
- } else {
- Name = getSectionPrefixForGlobal(Kind, TM.isLargeGlobalValue(GO));
}
bool HasPrefix = false;