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:
Rui Ueyama 2016-12-19 03:14:16 +00:00
parent adb58e7598
commit 8f687f71fb
4 changed files with 5 additions and 6 deletions

View File

@ -10,7 +10,6 @@
#ifndef LLD_ELF_CONFIG_H
#define LLD_ELF_CONFIG_H
#include "llvm/ADT/CachedHashString.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/ELF.h"
@ -72,7 +71,7 @@ struct VersionDefinition {
struct Configuration {
InputFile *FirstElf = nullptr;
uint8_t OSABI = 0;
llvm::DenseMap<llvm::CachedHashStringRef, unsigned> SymbolOrderingFile;
llvm::DenseMap<llvm::StringRef, unsigned> SymbolOrderingFile;
llvm::StringMap<uint64_t> SectionStartMap;
llvm::StringRef DynamicLinker;
llvm::StringRef Entry;

View File

@ -487,7 +487,7 @@ static void parseSymbolOrderingList(MemoryBufferRef MB) {
SmallVector<StringRef, 0> Arr;
MB.getBuffer().split(Arr, '\n');
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.

View File

@ -14,6 +14,7 @@
#include "Relocations.h"
#include "Thunks.h"
#include "lld/Core/LLVM.h"
#include "llvm/ADT/CachedHashString.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/TinyPtrVector.h"
#include "llvm/Object/ELF.h"

View File

@ -770,8 +770,7 @@ static void sortBySymbolsOrder(ArrayRef<OutputSectionBase *> V) {
auto *D = dyn_cast<DefinedRegular<ELFT>>(Body);
if (!D || !D->Section)
continue;
auto It =
Config->SymbolOrderingFile.find(CachedHashString(Body->getName()));
auto It = Config->SymbolOrderingFile.find(Body->getName());
if (It == Config->SymbolOrderingFile.end())
continue;
@ -782,7 +781,7 @@ static void sortBySymbolsOrder(ArrayRef<OutputSectionBase *> 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) {
auto It = SectionsOrder.find(S);
return It == SectionsOrder.end() ? UINT32_MAX : It->second;