summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/StringTableBuilder.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-01-29 00:13:28 +0000
committerReid Kleckner <rnk@google.com>2016-01-29 00:13:28 +0000
commit00d9639c248b226225484bfd60cf0d694c353c38 (patch)
tree5c043616185eddd6a9d005436744692bff30ea86 /llvm/lib/MC/StringTableBuilder.cpp
parent877a1015974496beacfc3f9ec5809cec5b1368f5 (diff)
downloadbcm5719-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.cpp55
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';
OpenPOWER on IntegriCloud