From 0b28f17494261c09224595a4d244e32d45c2ce49 Mon Sep 17 00:00:00 2001 From: Sam McCall Date: Thu, 21 Dec 2017 20:11:46 +0000 Subject: [clangd] Don't re-hash SymbolID in maps, just use the SHA1 data git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@321302 91177308-0d34-0410-b5e6-96231b3b80d8 --- clangd/index/Index.cpp | 2 +- clangd/index/Index.h | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/clangd/index/Index.cpp b/clangd/index/Index.cpp index 95ecb6b1..cac3ceab 100644 --- a/clangd/index/Index.cpp +++ b/clangd/index/Index.cpp @@ -24,7 +24,7 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const SymbolID &ID) { void operator>>(llvm::StringRef Str, SymbolID &ID) { std::string HexString = fromHex(Str); - assert(HexString.size() == 20); + assert(HexString.size() == ID.HashValue.size()); std::copy(HexString.begin(), HexString.end(), ID.HashValue.begin()); } diff --git a/clangd/index/Index.h b/clangd/index/Index.h index f0414bf7..1816d79f 100644 --- a/clangd/index/Index.h +++ b/clangd/index/Index.h @@ -52,7 +52,9 @@ public: private: friend llvm::hash_code hash_value(const SymbolID &ID) { - return hash_value(ArrayRef(ID.HashValue)); + // We already have a good hash, just return the first bytes. + static_assert(sizeof(size_t) <= 20, "size_t longer than SHA1!"); + return *reinterpret_cast(ID.HashValue.data()); } friend llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const SymbolID &ID); -- cgit v1.2.3