Add two small structs for readability in place of std::pair and std::tuple. NFC.
llvm-svn: 233422
This commit is contained in:
parent
e802387476
commit
44d5057e38
|
@ -162,12 +162,38 @@ namespace llvm {
|
||||||
/// The Compile Unit ID that we are currently processing.
|
/// The Compile Unit ID that we are currently processing.
|
||||||
unsigned DwarfCompileUnitID;
|
unsigned DwarfCompileUnitID;
|
||||||
|
|
||||||
typedef std::pair<std::string, std::string> SectionGroupPair;
|
struct ELFSectionKey {
|
||||||
typedef std::tuple<std::string, std::string, int> SectionGroupTriple;
|
std::string SectionName;
|
||||||
|
std::string GroupName;
|
||||||
|
ELFSectionKey(StringRef SectionName, StringRef GroupName)
|
||||||
|
: SectionName(SectionName), GroupName(GroupName) {}
|
||||||
|
bool operator<(const ELFSectionKey &Other) const {
|
||||||
|
if (SectionName < Other.SectionName)
|
||||||
|
return true;
|
||||||
|
return GroupName < Other.GroupName;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct COFFSectionKey {
|
||||||
|
std::string SectionName;
|
||||||
|
std::string GroupName;
|
||||||
|
int SelectionKey;
|
||||||
|
COFFSectionKey(StringRef SectionName, StringRef GroupName,
|
||||||
|
int SelectionKey)
|
||||||
|
: SectionName(SectionName), GroupName(GroupName),
|
||||||
|
SelectionKey(SelectionKey) {}
|
||||||
|
bool operator<(const COFFSectionKey &Other) const {
|
||||||
|
if (SectionName < Other.SectionName)
|
||||||
|
return true;
|
||||||
|
if (GroupName < Other.GroupName)
|
||||||
|
return GroupName < Other.GroupName;
|
||||||
|
return SelectionKey < Other.SelectionKey;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
StringMap<const MCSectionMachO*> MachOUniquingMap;
|
StringMap<const MCSectionMachO*> MachOUniquingMap;
|
||||||
std::map<SectionGroupPair, const MCSectionELF *> ELFUniquingMap;
|
std::map<ELFSectionKey, const MCSectionELF *> ELFUniquingMap;
|
||||||
std::map<SectionGroupTriple, const MCSectionCOFF *> COFFUniquingMap;
|
std::map<COFFSectionKey, const MCSectionCOFF *> COFFUniquingMap;
|
||||||
|
|
||||||
/// Do automatic reset in destructor
|
/// Do automatic reset in destructor
|
||||||
bool AutoReset;
|
bool AutoReset;
|
||||||
|
|
|
@ -268,11 +268,10 @@ void MCContext::renameELFSection(const MCSectionELF *Section, StringRef Name) {
|
||||||
if (const MCSymbol *Group = Section->getGroup())
|
if (const MCSymbol *Group = Section->getGroup())
|
||||||
GroupName = Group->getName();
|
GroupName = Group->getName();
|
||||||
|
|
||||||
ELFUniquingMap.erase(SectionGroupPair(Section->getSectionName(), GroupName));
|
ELFUniquingMap.erase(ELFSectionKey{Section->getSectionName(), GroupName});
|
||||||
auto I =
|
auto I = ELFUniquingMap.insert(std::make_pair(ELFSectionKey{Name, GroupName},
|
||||||
ELFUniquingMap.insert(std::make_pair(SectionGroupPair(Name, GroupName),
|
Section)).first;
|
||||||
Section)).first;
|
StringRef CachedName = I->first.SectionName;
|
||||||
StringRef CachedName = I->first.first;
|
|
||||||
const_cast<MCSectionELF*>(Section)->setSectionName(CachedName);
|
const_cast<MCSectionELF*>(Section)->setSectionName(CachedName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,7 +281,7 @@ const MCSectionELF *MCContext::getELFSection(StringRef Section, unsigned Type,
|
||||||
const char *BeginSymName) {
|
const char *BeginSymName) {
|
||||||
// Do the lookup, if we have a hit, return it.
|
// Do the lookup, if we have a hit, return it.
|
||||||
auto IterBool = ELFUniquingMap.insert(
|
auto IterBool = ELFUniquingMap.insert(
|
||||||
std::make_pair(SectionGroupPair(Section, Group), nullptr));
|
std::make_pair(ELFSectionKey{Section, Group}, nullptr));
|
||||||
auto &Entry = *IterBool.first;
|
auto &Entry = *IterBool.first;
|
||||||
if (!IterBool.second && !Unique)
|
if (!IterBool.second && !Unique)
|
||||||
return Entry.second;
|
return Entry.second;
|
||||||
|
@ -291,7 +290,7 @@ const MCSectionELF *MCContext::getELFSection(StringRef Section, unsigned Type,
|
||||||
if (!Group.empty())
|
if (!Group.empty())
|
||||||
GroupSym = GetOrCreateSymbol(Group);
|
GroupSym = GetOrCreateSymbol(Group);
|
||||||
|
|
||||||
StringRef CachedName = Entry.first.first;
|
StringRef CachedName = Entry.first.SectionName;
|
||||||
|
|
||||||
SectionKind Kind;
|
SectionKind Kind;
|
||||||
if (Flags & ELF::SHF_EXECINSTR)
|
if (Flags & ELF::SHF_EXECINSTR)
|
||||||
|
@ -331,7 +330,7 @@ MCContext::getCOFFSection(StringRef Section, unsigned Characteristics,
|
||||||
int Selection, const char *BeginSymName) {
|
int Selection, const char *BeginSymName) {
|
||||||
// Do the lookup, if we have a hit, return it.
|
// Do the lookup, if we have a hit, return it.
|
||||||
|
|
||||||
SectionGroupTriple T(Section, COMDATSymName, Selection);
|
COFFSectionKey T{Section, COMDATSymName, Selection};
|
||||||
auto IterBool = COFFUniquingMap.insert(std::make_pair(T, nullptr));
|
auto IterBool = COFFUniquingMap.insert(std::make_pair(T, nullptr));
|
||||||
auto Iter = IterBool.first;
|
auto Iter = IterBool.first;
|
||||||
if (!IterBool.second)
|
if (!IterBool.second)
|
||||||
|
@ -345,7 +344,7 @@ MCContext::getCOFFSection(StringRef Section, unsigned Characteristics,
|
||||||
if (BeginSymName)
|
if (BeginSymName)
|
||||||
Begin = createTempSymbol(BeginSymName, false);
|
Begin = createTempSymbol(BeginSymName, false);
|
||||||
|
|
||||||
StringRef CachedName = std::get<0>(Iter->first);
|
StringRef CachedName = Iter->first.SectionName;
|
||||||
MCSectionCOFF *Result = new (*this) MCSectionCOFF(
|
MCSectionCOFF *Result = new (*this) MCSectionCOFF(
|
||||||
CachedName, Characteristics, COMDATSymbol, Selection, Kind, Begin);
|
CachedName, Characteristics, COMDATSymbol, Selection, Kind, Begin);
|
||||||
|
|
||||||
|
@ -361,7 +360,7 @@ const MCSectionCOFF *MCContext::getCOFFSection(StringRef Section,
|
||||||
}
|
}
|
||||||
|
|
||||||
const MCSectionCOFF *MCContext::getCOFFSection(StringRef Section) {
|
const MCSectionCOFF *MCContext::getCOFFSection(StringRef Section) {
|
||||||
SectionGroupTriple T(Section, "", 0);
|
COFFSectionKey T{Section, "", 0};
|
||||||
auto Iter = COFFUniquingMap.find(T);
|
auto Iter = COFFUniquingMap.find(T);
|
||||||
if (Iter == COFFUniquingMap.end())
|
if (Iter == COFFUniquingMap.end())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
Loading…
Reference in New Issue