diff options
author | Craig Topper <craig.topper@gmail.com> | 2013-08-29 05:18:04 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2013-08-29 05:18:04 +0000 |
commit | 354f20a8720732aa1745d1ff9595382cee324ee2 (patch) | |
tree | 696d91788f64b9a10e1878ef546d882441b2cdbd /tools/diagtool | |
parent | a4516a5fea62c1b6e2123b9c8b1627905e790963 (diff) | |
download | clang-354f20a8720732aa1745d1ff9595382cee324ee2.tar.gz clang-354f20a8720732aa1745d1ff9595382cee324ee2.tar.bz2 clang-354f20a8720732aa1745d1ff9595382cee324ee2.tar.xz |
Move individual group name strings from the OptionTable into one big char array. Then only store offsets into it in the OptionTable. Saves about 4K from the clang binary and removes 400 relocation entries from DiagnosticIDs.o.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189568 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/diagtool')
-rw-r--r-- | tools/diagtool/DiagnosticNames.cpp | 4 | ||||
-rw-r--r-- | tools/diagtool/DiagnosticNames.h | 11 | ||||
-rw-r--r-- | tools/diagtool/TreeView.cpp | 3 |
3 files changed, 9 insertions, 9 deletions
diff --git a/tools/diagtool/DiagnosticNames.cpp b/tools/diagtool/DiagnosticNames.cpp index fa510eb6ec..34c3229c6e 100644 --- a/tools/diagtool/DiagnosticNames.cpp +++ b/tools/diagtool/DiagnosticNames.cpp @@ -73,6 +73,10 @@ static const GroupRecord OptionTable[] = { #undef GET_DIAG_TABLE }; +llvm::StringRef GroupRecord::getName() const { + return StringRef(DiagGroupNames + NameOffset + 1, DiagGroupNames[NameOffset]); +} + GroupRecord::subgroup_iterator GroupRecord::subgroup_begin() const { return DiagSubGroups + SubGroups; } diff --git a/tools/diagtool/DiagnosticNames.h b/tools/diagtool/DiagnosticNames.h index 957a1818e8..a3321fa681 100644 --- a/tools/diagtool/DiagnosticNames.h +++ b/tools/diagtool/DiagnosticNames.h @@ -35,14 +35,11 @@ namespace diagtool { struct GroupRecord { - const char *NameStr; - uint16_t NameLen; + uint16_t NameOffset; uint16_t Members; uint16_t SubGroups; - llvm::StringRef getName() const { - return llvm::StringRef(NameStr, NameLen); - } + llvm::StringRef getName() const; template<typename RecordType> class group_iterator { @@ -94,8 +91,8 @@ namespace diagtool { diagnostics_iterator diagnostics_begin() const; diagnostics_iterator diagnostics_end() const; - bool operator<(const GroupRecord &Other) const { - return getName() < Other.getName(); + bool operator<(llvm::StringRef Other) const { + return getName() < Other; } }; diff --git a/tools/diagtool/TreeView.cpp b/tools/diagtool/TreeView.cpp index 10809c1d8d..fd548ef011 100644 --- a/tools/diagtool/TreeView.cpp +++ b/tools/diagtool/TreeView.cpp @@ -99,9 +99,8 @@ static int showGroup(llvm::raw_ostream &out, StringRef RootGroup, return 1; } - GroupRecord Key = { RootGroup.data(), (uint16_t)RootGroup.size(), 0, 0 }; const GroupRecord *Found = - std::lower_bound(AllGroups.begin(), AllGroups.end(), Key); + std::lower_bound(AllGroups.begin(), AllGroups.end(), RootGroup); if (Found == AllGroups.end() || Found->getName() != RootGroup) { llvm::errs() << "No such diagnostic group exists\n"; |