summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2017-12-21 20:11:46 +0000
committerSam McCall <sam.mccall@gmail.com>2017-12-21 20:11:46 +0000
commitdf898cc5edd5e87acbd2b0eacc62b29d347b1f97 (patch)
treed4ab3383f71769c494359ccfb669a5e52806c79c
parentabb890b7be61138b65252ac0b6a556018ab741a6 (diff)
downloadbcm5719-llvm-df898cc5edd5e87acbd2b0eacc62b29d347b1f97.tar.gz
bcm5719-llvm-df898cc5edd5e87acbd2b0eacc62b29d347b1f97.zip
[clangd] Don't re-hash SymbolID in maps, just use the SHA1 data
llvm-svn: 321302
-rw-r--r--clang-tools-extra/clangd/index/Index.cpp2
-rw-r--r--clang-tools-extra/clangd/index/Index.h4
2 files changed, 4 insertions, 2 deletions
diff --git a/clang-tools-extra/clangd/index/Index.cpp b/clang-tools-extra/clangd/index/Index.cpp
index 95ecb6b18ec..cac3ceab6f1 100644
--- a/clang-tools-extra/clangd/index/Index.cpp
+++ b/clang-tools-extra/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/clang-tools-extra/clangd/index/Index.h b/clang-tools-extra/clangd/index/Index.h
index f0414bf7b4c..1816d79fce1 100644
--- a/clang-tools-extra/clangd/index/Index.h
+++ b/clang-tools-extra/clangd/index/Index.h
@@ -52,7 +52,9 @@ public:
private:
friend llvm::hash_code hash_value(const SymbolID &ID) {
- return hash_value(ArrayRef<uint8_t>(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<const size_t *>(ID.HashValue.data());
}
friend llvm::raw_ostream &operator<<(llvm::raw_ostream &OS,
const SymbolID &ID);
OpenPOWER on IntegriCloud