From 02d71ade063d1acbd9fe22c96671760ddf746219 Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Fri, 6 May 2016 00:51:58 +0000 Subject: Make StringTableBuilder to cache hash values. This change seems to speed up LLD a bit if it has a lot of mergeable sections. The number is below. It's not too bad for a small patch. Time to link Clang (debug build): w/o patch 6.3696 seconds w/patch 6.2746 seconds (-1.5%) Differential Revision: http://reviews.llvm.org/D19933 llvm-svn: 268698 --- llvm/lib/MC/StringTableBuilder.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'llvm/lib') diff --git a/llvm/lib/MC/StringTableBuilder.cpp b/llvm/lib/MC/StringTableBuilder.cpp index 6118b17f248..9d95952a6d3 100644 --- a/llvm/lib/MC/StringTableBuilder.cpp +++ b/llvm/lib/MC/StringTableBuilder.cpp @@ -34,11 +34,11 @@ StringTableBuilder::StringTableBuilder(Kind K, unsigned Alignment) } } -typedef std::pair StringPair; +typedef std::pair, size_t> StringPair; // Returns the character at Pos from end of a string. static int charTailAt(StringPair *P, size_t Pos) { - StringRef S = P->first; + StringRef S = P->first.Val; if (Pos >= S.size()) return -1; return (unsigned char)S[S.size() - Pos - 1]; @@ -86,7 +86,7 @@ void StringTableBuilder::finalizeInOrder() { } void StringTableBuilder::finalizeStringTable(bool Optimize) { - typedef std::pair StringOffsetPair; + typedef std::pair, size_t> StringOffsetPair; std::vector Strings; Strings.reserve(StringIndexMap.size()); for (StringOffsetPair &P : StringIndexMap) @@ -121,7 +121,7 @@ void StringTableBuilder::finalizeStringTable(bool Optimize) { StringRef Previous; for (StringOffsetPair *P : Strings) { - StringRef S = P->first; + StringRef S = P->first.Val; if (K == WinCOFF) assert(S.size() > COFF::NameSize && "Short string in COFF string table!"); -- cgit v1.2.3