diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-07-23 19:11:11 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-07-23 19:11:11 +0000 |
commit | c51609a0b5f5f5ad9ddabf38152b8da19cd902d8 (patch) | |
tree | 0998ad0190cb9416d92f309e58c4bd5e92abbf89 /clang/lib/Frontend/PCHWriter.cpp | |
parent | 5ea4192b7290934e453d2692e2b6be4937f535f7 (diff) | |
download | bcm5719-llvm-c51609a0b5f5f5ad9ddabf38152b8da19cd902d8.tar.gz bcm5719-llvm-c51609a0b5f5f5ad9ddabf38152b8da19cd902d8.zip |
PCH read/write for selector reference pool.
Finishes off radar 6507158.
llvm-svn: 109256
Diffstat (limited to 'clang/lib/Frontend/PCHWriter.cpp')
-rw-r--r-- | clang/lib/Frontend/PCHWriter.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/clang/lib/Frontend/PCHWriter.cpp b/clang/lib/Frontend/PCHWriter.cpp index b97aecbd8ca..0b8c5b42582 100644 --- a/clang/lib/Frontend/PCHWriter.cpp +++ b/clang/lib/Frontend/PCHWriter.cpp @@ -630,6 +630,7 @@ void PCHWriter::WriteBlockInfoBlock() { RECORD(UNUSED_STATIC_FUNCS); RECORD(MACRO_DEFINITION_OFFSETS); RECORD(CHAINED_METADATA); + RECORD(REFERENCED_SELECTOR_POOL); // SourceManager Block. BLOCK(SOURCE_MANAGER_BLOCK); @@ -1737,6 +1738,26 @@ void PCHWriter::WriteMethodPool(Sema &SemaRef) { } } +/// \brief Write the selectors referenced in @selector expression into PCH file. +void PCHWriter::WriteReferencedSelectorsPool(Sema &SemaRef) { + using namespace llvm; + if (SemaRef.ReferencedSelectors.empty()) + return; + + RecordData Record; + + Record.push_back(SemaRef.ReferencedSelectors.size()); + for (DenseMap<Selector, SourceLocation>::iterator S = + SemaRef.ReferencedSelectors.begin(), + E = SemaRef.ReferencedSelectors.end(); S != E; ++S) { + Selector Sel = (*S).first; + SourceLocation Loc = (*S).second; + AddSelectorRef(Sel, Record); + AddSourceLocation(Loc, Record); + } + Stream.EmitRecord(pch::REFERENCED_SELECTOR_POOL, Record); +} + //===----------------------------------------------------------------------===// // Identifier Table Serialization //===----------------------------------------------------------------------===// @@ -2247,6 +2268,7 @@ void PCHWriter::WritePCHCore(Sema &SemaRef, MemorizeStatCalls *StatCalls, WritePreprocessor(PP); WriteMethodPool(SemaRef); + WriteReferencedSelectorsPool(SemaRef); WriteIdentifierTable(PP); WriteTypeDeclOffsets(); |