diff options
author | Reid Kleckner <rnk@google.com> | 2016-01-29 00:13:28 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-01-29 00:13:28 +0000 |
commit | 00d9639c248b226225484bfd60cf0d694c353c38 (patch) | |
tree | 5c043616185eddd6a9d005436744692bff30ea86 /llvm/lib/MC/StringTableBuilder.cpp | |
parent | 877a1015974496beacfc3f9ec5809cec5b1368f5 (diff) | |
download | bcm5719-llvm-00d9639c248b226225484bfd60cf0d694c353c38.tar.gz bcm5719-llvm-00d9639c248b226225484bfd60cf0d694c353c38.zip |
Revert "[CodeView] Use assembler directives for line tables"
This reverts commit r259117.
The LineInfo constructor is defined in the codeview library and we have
to link against it now. Doing that isn't trivial, so reverting for now.
llvm-svn: 259126
Diffstat (limited to 'llvm/lib/MC/StringTableBuilder.cpp')
-rw-r--r-- | llvm/lib/MC/StringTableBuilder.cpp | 55 |
1 files changed, 8 insertions, 47 deletions
diff --git a/llvm/lib/MC/StringTableBuilder.cpp b/llvm/lib/MC/StringTableBuilder.cpp index f50e098e6e4..80e552287b3 100644 --- a/llvm/lib/MC/StringTableBuilder.cpp +++ b/llvm/lib/MC/StringTableBuilder.cpp @@ -16,22 +16,7 @@ using namespace llvm; -StringTableBuilder::StringTableBuilder(Kind K) : K(K) { - // Account for leading bytes in table so that offsets returned from add are - // correct. - switch (K) { - case RAW: - Size = 0; - break; - case MachO: - case ELF: - Size = 1; - break; - case WinCOFF: - Size = 4; - break; - } -} +StringTableBuilder::StringTableBuilder(Kind K) : K(K) {} typedef std::pair<StringRef, size_t> StringPair; @@ -77,32 +62,13 @@ tailcall: } void StringTableBuilder::finalize() { - finalizeStringTable(/*Optimize=*/true); -} - -void StringTableBuilder::finalizeInOrder() { - finalizeStringTable(/*Optimize=*/false); -} - -void StringTableBuilder::finalizeStringTable(bool Optimize) { - typedef std::pair<StringRef, size_t> StringOffsetPair; - std::vector<StringOffsetPair *> Strings; + std::vector<std::pair<StringRef, size_t> *> Strings; Strings.reserve(StringIndexMap.size()); - for (StringOffsetPair &P : StringIndexMap) + for (std::pair<StringRef, size_t> &P : StringIndexMap) Strings.push_back(&P); - if (!Strings.empty()) { - // If we're optimizing, sort by name. If not, sort by previously assigned - // offset. - if (Optimize) { - multikey_qsort(&Strings[0], &Strings[0] + Strings.size(), 0); - } else { - std::sort(Strings.begin(), Strings.end(), - [](const StringOffsetPair *LHS, const StringOffsetPair *RHS) { - return LHS->second < RHS->second; - }); - } - } + if (!Strings.empty()) + multikey_qsort(&Strings[0], &Strings[0] + Strings.size(), 0); switch (K) { case RAW: @@ -119,22 +85,17 @@ void StringTableBuilder::finalizeStringTable(bool Optimize) { } StringRef Previous; - for (StringOffsetPair *P : Strings) { + for (std::pair<StringRef, size_t> *P : Strings) { StringRef S = P->first; if (K == WinCOFF) assert(S.size() > COFF::NameSize && "Short string in COFF string table!"); - if (Optimize && Previous.endswith(S)) { + if (Previous.endswith(S)) { P->second = StringTable.size() - S.size() - (K != RAW); continue; } - if (Optimize) - P->second = StringTable.size(); - else - assert(P->second == StringTable.size() && - "different strtab offset after finalization"); - + P->second = StringTable.size(); StringTable += S; if (K != RAW) StringTable += '\x00'; |