diff options
-rw-r--r-- | lld/COFF/SymbolTable.cpp | 6 | ||||
-rw-r--r-- | lld/COFF/SymbolTable.h | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/lld/COFF/SymbolTable.cpp b/lld/COFF/SymbolTable.cpp index e9737fa0b22..785f4c2c443 100644 --- a/lld/COFF/SymbolTable.cpp +++ b/lld/COFF/SymbolTable.cpp @@ -117,7 +117,7 @@ void SymbolTable::reportRemainingUndefines() { } std::pair<Symbol *, bool> SymbolTable::insert(StringRef Name) { - Symbol *&Sym = Symtab[Name]; + Symbol *&Sym = Symtab[CachedHashStringRef(Name)]; if (Sym) return {Sym, false}; Sym = make<Symbol>(); @@ -302,7 +302,7 @@ std::vector<Chunk *> SymbolTable::getChunks() { } Symbol *SymbolTable::find(StringRef Name) { - auto It = Symtab.find(Name); + auto It = Symtab.find(CachedHashStringRef(Name)); if (It == Symtab.end()) return nullptr; return It->second; @@ -316,7 +316,7 @@ Symbol *SymbolTable::findUnderscore(StringRef Name) { StringRef SymbolTable::findByPrefix(StringRef Prefix) { for (auto Pair : Symtab) { - StringRef Name = Pair.first; + StringRef Name = Pair.first.val(); if (Name.startswith(Prefix)) return Name; } diff --git a/lld/COFF/SymbolTable.h b/lld/COFF/SymbolTable.h index 52636a386e6..4519e2f37a4 100644 --- a/lld/COFF/SymbolTable.h +++ b/lld/COFF/SymbolTable.h @@ -11,6 +11,7 @@ #define LLD_COFF_SYMBOL_TABLE_H #include "InputFiles.h" +#include "llvm/ADT/CachedHashString.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseMapInfo.h" #include "llvm/Support/Allocator.h" @@ -120,7 +121,7 @@ private: void addCombinedLTOObject(ObjectFile *Obj); std::vector<ObjectFile *> createLTOObjects(llvm::LTOCodeGenerator *CG); - llvm::DenseMap<StringRef, Symbol *> Symtab; + llvm::DenseMap<llvm::CachedHashStringRef, Symbol *> Symtab; std::vector<BitcodeFile *> BitcodeFiles; std::vector<SmallString<0>> Objs; |