aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/PCHWriter.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-04-25 19:25:49 +0000
committerDouglas Gregor <dgregor@apple.com>2009-04-25 19:25:49 +0000
commit1986cadcb30bbffafd321d9ac9f73fc3df050e74 (patch)
treecb863b9f2799fcccd4b8a825c52eca4c15e5c2c8 /lib/Frontend/PCHWriter.cpp
parent7eb83190c5589eedca04a8dda82dd3a93e09af94 (diff)
Tweak the data layout for the on-disk hash table of identifiers in the PCH file so that the key layout matches that of the PTH key layout
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70066 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/PCHWriter.cpp')
-rw-r--r--lib/Frontend/PCHWriter.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp
index 4ac836419e..7eb398c166 100644
--- a/lib/Frontend/PCHWriter.cpp
+++ b/lib/Frontend/PCHWriter.cpp
@@ -2013,7 +2013,6 @@ public:
EmitKeyDataLength(llvm::raw_ostream& Out, const IdentifierInfo* II,
pch::IdentID ID) {
unsigned KeyLen = strlen(II->getName()) + 1;
- clang::io::Emit16(Out, KeyLen);
unsigned DataLen = 4 + 4; // 4 bytes for token ID, builtin, flags
// 4 bytes for the persistent ID
if (II->hasMacroDefinition() &&
@@ -2023,7 +2022,14 @@ public:
DEnd = IdentifierResolver::end();
D != DEnd; ++D)
DataLen += sizeof(pch::DeclID);
+
+ // We emit the data length before the key length, because we want
+ // the key length to immediately precede the actual string
+ // data. This is so that our identifier length + key layout
+ // matches that of the identifier hash table for pretokenized
+ // headers.
clang::io::Emit16(Out, DataLen);
+ clang::io::Emit16(Out, KeyLen);
return std::make_pair(KeyLen, DataLen);
}