From 7a70be68650a114119f4eb8995e320520d32b6e3 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Wed, 1 Aug 2018 01:29:30 +0000 Subject: [PATCH] Simplify selectELFSectionForGlobal by pulling out the entry size determination for mergeable sections into a small static function. llvm-svn: 338469 --- llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 49 +++++++++++++---------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index 58e3e71..f6b91a2 100644 --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -422,32 +422,34 @@ static StringRef getSectionPrefixForGlobal(SectionKind Kind) { return ".data.rel.ro"; } +static unsigned getEntrySizeForKind(SectionKind Kind) { + if (Kind.isMergeable1ByteCString()) + return 1; + else if (Kind.isMergeable2ByteCString()) + return 2; + else if (Kind.isMergeable4ByteCString()) + return 4; + else if (Kind.isMergeableConst4()) + return 4; + else if (Kind.isMergeableConst8()) + return 8; + else if (Kind.isMergeableConst16()) + return 16; + else if (Kind.isMergeableConst32()) + return 32; + else { + // We shouldn't have mergeable C strings or mergeable constants that we + // didn't handle above. + assert(!Kind.isMergeableCString() && "unknown string width"); + assert(!Kind.isMergeableConst() && "unknown data width"); + return 0; + } +} + static MCSectionELF *selectELFSectionForGlobal( MCContext &Ctx, const GlobalObject *GO, SectionKind Kind, Mangler &Mang, const TargetMachine &TM, bool EmitUniqueSection, unsigned Flags, unsigned *NextUniqueID, const MCSymbolELF *AssociatedSymbol) { - unsigned EntrySize = 0; - if (Kind.isMergeableCString()) { - if (Kind.isMergeable2ByteCString()) { - EntrySize = 2; - } else if (Kind.isMergeable4ByteCString()) { - EntrySize = 4; - } else { - EntrySize = 1; - assert(Kind.isMergeable1ByteCString() && "unknown string width"); - } - } else if (Kind.isMergeableConst()) { - if (Kind.isMergeableConst4()) { - EntrySize = 4; - } else if (Kind.isMergeableConst8()) { - EntrySize = 8; - } else if (Kind.isMergeableConst16()) { - EntrySize = 16; - } else { - assert(Kind.isMergeableConst32() && "unknown data width"); - EntrySize = 32; - } - } StringRef Group = ""; if (const Comdat *C = getELFComdat(GO)) { @@ -455,6 +457,9 @@ static MCSectionELF *selectELFSectionForGlobal( Group = C->getName(); } + // Get the section entry size based on the kind. + unsigned EntrySize = getEntrySizeForKind(Kind); + SmallString<128> Name; if (Kind.isMergeableCString()) { // We also need alignment here. -- 2.7.4