forked from OSchip/llvm-project
Remove inappropriate use of CachedHashStringRef.
Use of CachedHashStringRef makes sense only when we reuse hash values. Sprinkling it to all DenseMap has no benefits and just complicates data types. Basically we shouldn't use CachedHashStringRef unless there is a strong reason to to do so. llvm-svn: 290076
This commit is contained in:
parent
adb58e7598
commit
8f687f71fb
|
@ -10,7 +10,6 @@
|
||||||
#ifndef LLD_ELF_CONFIG_H
|
#ifndef LLD_ELF_CONFIG_H
|
||||||
#define LLD_ELF_CONFIG_H
|
#define LLD_ELF_CONFIG_H
|
||||||
|
|
||||||
#include "llvm/ADT/CachedHashString.h"
|
|
||||||
#include "llvm/ADT/MapVector.h"
|
#include "llvm/ADT/MapVector.h"
|
||||||
#include "llvm/ADT/StringRef.h"
|
#include "llvm/ADT/StringRef.h"
|
||||||
#include "llvm/Support/ELF.h"
|
#include "llvm/Support/ELF.h"
|
||||||
|
@ -72,7 +71,7 @@ struct VersionDefinition {
|
||||||
struct Configuration {
|
struct Configuration {
|
||||||
InputFile *FirstElf = nullptr;
|
InputFile *FirstElf = nullptr;
|
||||||
uint8_t OSABI = 0;
|
uint8_t OSABI = 0;
|
||||||
llvm::DenseMap<llvm::CachedHashStringRef, unsigned> SymbolOrderingFile;
|
llvm::DenseMap<llvm::StringRef, unsigned> SymbolOrderingFile;
|
||||||
llvm::StringMap<uint64_t> SectionStartMap;
|
llvm::StringMap<uint64_t> SectionStartMap;
|
||||||
llvm::StringRef DynamicLinker;
|
llvm::StringRef DynamicLinker;
|
||||||
llvm::StringRef Entry;
|
llvm::StringRef Entry;
|
||||||
|
|
|
@ -487,7 +487,7 @@ static void parseSymbolOrderingList(MemoryBufferRef MB) {
|
||||||
SmallVector<StringRef, 0> Arr;
|
SmallVector<StringRef, 0> Arr;
|
||||||
MB.getBuffer().split(Arr, '\n');
|
MB.getBuffer().split(Arr, '\n');
|
||||||
for (StringRef S : Arr)
|
for (StringRef S : Arr)
|
||||||
Config->SymbolOrderingFile.insert({CachedHashStringRef(S.trim()), I++});
|
Config->SymbolOrderingFile.insert({S.trim(), I++});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initializes Config members by the command line options.
|
// Initializes Config members by the command line options.
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include "Relocations.h"
|
#include "Relocations.h"
|
||||||
#include "Thunks.h"
|
#include "Thunks.h"
|
||||||
#include "lld/Core/LLVM.h"
|
#include "lld/Core/LLVM.h"
|
||||||
|
#include "llvm/ADT/CachedHashString.h"
|
||||||
#include "llvm/ADT/DenseSet.h"
|
#include "llvm/ADT/DenseSet.h"
|
||||||
#include "llvm/ADT/TinyPtrVector.h"
|
#include "llvm/ADT/TinyPtrVector.h"
|
||||||
#include "llvm/Object/ELF.h"
|
#include "llvm/Object/ELF.h"
|
||||||
|
|
|
@ -770,8 +770,7 @@ static void sortBySymbolsOrder(ArrayRef<OutputSectionBase *> V) {
|
||||||
auto *D = dyn_cast<DefinedRegular<ELFT>>(Body);
|
auto *D = dyn_cast<DefinedRegular<ELFT>>(Body);
|
||||||
if (!D || !D->Section)
|
if (!D || !D->Section)
|
||||||
continue;
|
continue;
|
||||||
auto It =
|
auto It = Config->SymbolOrderingFile.find(Body->getName());
|
||||||
Config->SymbolOrderingFile.find(CachedHashString(Body->getName()));
|
|
||||||
if (It == Config->SymbolOrderingFile.end())
|
if (It == Config->SymbolOrderingFile.end())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -782,7 +781,7 @@ static void sortBySymbolsOrder(ArrayRef<OutputSectionBase *> V) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (OutputSectionBase *Base : V)
|
for (OutputSectionBase *Base : V)
|
||||||
if (OutputSection<ELFT> *Sec = dyn_cast<OutputSection<ELFT>>(Base))
|
if (auto *Sec = dyn_cast<OutputSection<ELFT>>(Base))
|
||||||
Sec->sort([&](InputSection<ELFT> *S) {
|
Sec->sort([&](InputSection<ELFT> *S) {
|
||||||
auto It = SectionsOrder.find(S);
|
auto It = SectionsOrder.find(S);
|
||||||
return It == SectionsOrder.end() ? UINT32_MAX : It->second;
|
return It == SectionsOrder.end() ? UINT32_MAX : It->second;
|
||||||
|
|
Loading…
Reference in New Issue