summaryrefslogtreecommitdiff
path: root/tools/diagtool
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2013-08-28 06:01:10 +0000
committerCraig Topper <craig.topper@gmail.com>2013-08-28 06:01:10 +0000
commit0e28a257727f092fbb2d544fd9aaf3b20a323456 (patch)
treee0baaf8a4be7f1070016bd39932ebbece1ebd822 /tools/diagtool
parenta2f9036b7e46166361b612c7fc66544d5529dc67 (diff)
downloadclang-0e28a257727f092fbb2d544fd9aaf3b20a323456.tar.gz
clang-0e28a257727f092fbb2d544fd9aaf3b20a323456.tar.bz2
clang-0e28a257727f092fbb2d544fd9aaf3b20a323456.tar.xz
Reorder and shrink size of NameLen field in diagnostic group table. Shaves ~4K from clang binary.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@189445 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/diagtool')
-rw-r--r--tools/diagtool/DiagnosticNames.h5
-rw-r--r--tools/diagtool/TreeView.cpp7
2 files changed, 7 insertions, 5 deletions
diff --git a/tools/diagtool/DiagnosticNames.h b/tools/diagtool/DiagnosticNames.h
index dd5381f028..957a1818e8 100644
--- a/tools/diagtool/DiagnosticNames.h
+++ b/tools/diagtool/DiagnosticNames.h
@@ -35,11 +35,8 @@ namespace diagtool {
struct GroupRecord {
- // Be safe with the size of 'NameLen' because we don't statically check if
- // the size will fit in the field; the struct size won't decrease with a
- // shorter type anyway.
- size_t NameLen;
const char *NameStr;
+ uint16_t NameLen;
uint16_t Members;
uint16_t SubGroups;
diff --git a/tools/diagtool/TreeView.cpp b/tools/diagtool/TreeView.cpp
index 6298179030..10809c1d8d 100644
--- a/tools/diagtool/TreeView.cpp
+++ b/tools/diagtool/TreeView.cpp
@@ -94,7 +94,12 @@ static int showGroup(llvm::raw_ostream &out, StringRef RootGroup,
bool FlagsOnly) {
ArrayRef<GroupRecord> AllGroups = getDiagnosticGroups();
- GroupRecord Key = { RootGroup.size(), RootGroup.data(), 0, 0 };
+ if (RootGroup.size() > UINT16_MAX) {
+ llvm::errs() << "No such diagnostic group exists\n";
+ return 1;
+ }
+
+ GroupRecord Key = { RootGroup.data(), (uint16_t)RootGroup.size(), 0, 0 };
const GroupRecord *Found =
std::lower_bound(AllGroups.begin(), AllGroups.end(), Key);