summaryrefslogtreecommitdiff
path: root/Driver
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-02-11 16:06:55 +0000
committerTed Kremenek <kremenek@apple.com>2009-02-11 16:06:55 +0000
commitf1de4649e917f891d24e0718d02ee904b9edbe9d (patch)
treea694b59141a1d8b67fb09fb8892cd3c59a522c83 /Driver
parentd25c623a59cac5d92dd1b34b0d73106b524390bd (diff)
downloadclang-f1de4649e917f891d24e0718d02ee904b9edbe9d.tar.gz
PTH: Don't emit the PTH offset of the IdentifierInfo string data as that data is
referenced by other tables. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64304 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Driver')
-rw-r--r--Driver/CacheTokens.cpp30
1 files changed, 10 insertions, 20 deletions
diff --git a/Driver/CacheTokens.cpp b/Driver/CacheTokens.cpp
index 23400e67c0..58f1d21c37 100644
--- a/Driver/CacheTokens.cpp
+++ b/Driver/CacheTokens.cpp
@@ -273,8 +273,12 @@ class VISIBILITY_HIDDEN PTHWriter {
for ( ; I != E ; ++I) Out << *I;
}
- std::pair<Offset,std::pair<Offset, Offset> > EmitIdentifierTable();
- Offset EmitFileTable();
+ std::pair<Offset, Offset> EmitIdentifierTable();
+
+ /// EmitFileTable - Emit a table mapping from file name strings to PTH
+ /// token data.
+ Offset EmitFileTable() { return PM.Emit(Out); }
+
PCHEntry LexTokens(Lexer& L);
Offset EmitCachedSpellings();
@@ -361,8 +365,7 @@ public:
};
}
-std::pair<Offset,std::pair<Offset,Offset> >
-PTHWriter::EmitIdentifierTable() {
+std::pair<Offset,Offset> PTHWriter::EmitIdentifierTable() {
llvm::BumpPtrAllocator Alloc;
// Build an inverse map from persistent IDs -> IdentifierInfo*.
@@ -388,9 +391,6 @@ PTHWriter::EmitIdentifierTable() {
Offset LexicalOff = Out.tell();
for (unsigned i = 0; i < idcount ; ++i) Emit32(LexicalOrder[i]);
- // Write out the string data itself.
- Offset DataOff = Out.tell();
-
for (unsigned i = 0; i < idcount; ++i) {
IDData& d = IIDMap[i];
d.FileOffset = Out.tell(); // Record the location for this data.
@@ -408,7 +408,7 @@ PTHWriter::EmitIdentifierTable() {
Emit32(idcount); // Emit the number of identifiers.
for (unsigned i = 0 ; i < idcount; ++i) Emit32(IIDMap[i].FileOffset);
- return std::make_pair(DataOff, std::make_pair(IDOff, LexicalOff));
+ return std::make_pair(IDOff, LexicalOff);
}
@@ -616,8 +616,7 @@ void PTHWriter::GeneratePTH() {
}
// Write out the identifier table.
- const std::pair<Offset, std::pair<Offset,Offset> >& IdTableOff
- = EmitIdentifierTable();
+ const std::pair<Offset,Offset>& IdTableOff = EmitIdentifierTable();
// Write out the cached strings table.
Offset SpellingOff = EmitCachedSpellings();
@@ -628,8 +627,7 @@ void PTHWriter::GeneratePTH() {
// Finally, write out the offset table at the end.
Offset JumpTargetOffset = Out.tell();
Emit32(IdTableOff.first);
- Emit32(IdTableOff.second.first);
- Emit32(IdTableOff.second.second);
+ Emit32(IdTableOff.second);
Emit32(FileTableOff);
Emit32(SpellingOff);
@@ -659,11 +657,3 @@ void clang::CacheTokens(Preprocessor& PP, const std::string& OutFile) {
PW.GeneratePTH();
}
-
-//===----------------------------------------------------------------------===//
-// Client code of on-disk hashtable logic.
-//===----------------------------------------------------------------------===//
-
-Offset PTHWriter::EmitFileTable() {
- return PM.Emit(Out);
-}