Index: llvm/trunk/include/llvm/MC/StringTableBuilder.h =================================================================== --- llvm/trunk/include/llvm/MC/StringTableBuilder.h +++ llvm/trunk/include/llvm/MC/StringTableBuilder.h @@ -23,7 +23,7 @@ private: SmallString<256> StringTable; - DenseMap StringIndexMap; + DenseMap, size_t> StringIndexMap; size_t Size = 0; Kind K; unsigned Alignment; @@ -57,7 +57,10 @@ /// after the table is finalized. size_t getOffset(StringRef S) const; - const DenseMap &getMap() const { return StringIndexMap; } + const DenseMap, size_t> &getMap() const { + return StringIndexMap; + } + size_t getSize() const { return Size; } void clear(); Index: llvm/trunk/lib/MC/StringTableBuilder.cpp =================================================================== --- llvm/trunk/lib/MC/StringTableBuilder.cpp +++ llvm/trunk/lib/MC/StringTableBuilder.cpp @@ -34,11 +34,11 @@ } } -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::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 @@ 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!");