diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-08-22 19:00:43 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-11-13 20:39:49 +0000 |
commit | fe6060f10f634930ff71b7c50291ddc610da2475 (patch) | |
tree | 1483580c790bd4d27b6500a7542b5ee00534d3cc /contrib/llvm-project/llvm/lib/Target/TargetLoweringObjectFile.cpp | |
parent | b61bce17f346d79cecfd8f195a64b10f77be43b1 (diff) | |
parent | 344a3780b2e33f6ca763666c380202b18aab72a3 (diff) |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/TargetLoweringObjectFile.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Target/TargetLoweringObjectFile.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/TargetLoweringObjectFile.cpp b/contrib/llvm-project/llvm/lib/Target/TargetLoweringObjectFile.cpp index 81af4eead6d2..7954f0f09faf 100644 --- a/contrib/llvm-project/llvm/lib/Target/TargetLoweringObjectFile.cpp +++ b/contrib/llvm-project/llvm/lib/Target/TargetLoweringObjectFile.cpp @@ -44,7 +44,7 @@ void TargetLoweringObjectFile::Initialize(MCContext &ctx, // `Initialize` can be called more than once. delete Mang; Mang = new Mangler(); - InitMCObjectFileInfo(TM.getTargetTriple(), TM.isPositionIndependent(), ctx, + initMCObjectFileInfo(ctx, TM.isPositionIndependent(), TM.getCodeModel() == CodeModel::Large); // Reset various EH DWARF encodings. @@ -217,8 +217,14 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalObject *GO, // Handle thread-local data first. if (GVar->isThreadLocal()) { - if (isSuitableForBSS(GVar) && !TM.Options.NoZerosInBSS) + if (isSuitableForBSS(GVar) && !TM.Options.NoZerosInBSS) { + // Zero-initialized TLS variables with local linkage always get classified + // as ThreadBSSLocal. + if (GVar->hasLocalLinkage()) { + return SectionKind::getThreadBSSLocal(); + } return SectionKind::getThreadBSS(); + } return SectionKind::getThreadData(); } @@ -290,7 +296,8 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalObject *GO, // consideration when it tries to merge entries in the section. Reloc::Model ReloModel = TM.getRelocationModel(); if (ReloModel == Reloc::Static || ReloModel == Reloc::ROPI || - ReloModel == Reloc::RWPI || ReloModel == Reloc::ROPI_RWPI) + ReloModel == Reloc::RWPI || ReloModel == Reloc::ROPI_RWPI || + !C->needsDynamicRelocation()) return SectionKind::getReadOnly(); // Otherwise, the dynamic linker needs to fix it up, put it in the @@ -380,6 +387,11 @@ MCSection *TargetLoweringObjectFile::getSectionForMachineBasicBlock( return nullptr; } +MCSection *TargetLoweringObjectFile::getUniqueSectionForFunction( + const Function &F, const TargetMachine &TM) const { + return nullptr; +} + /// getTTypeGlobalReference - Return an MCExpr to use for a /// reference to the specified global variable from exception /// handling information. |