diff options
| author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-07-08 22:01:51 +0000 |
|---|---|---|
| committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-07-08 22:01:51 +0000 |
| commit | 595c51342c8bb1d256e0d6bd2bfedc03899f60cd (patch) | |
| tree | aa12cc0f48b9162f7777ee7f18ca229d19060804 /clang/lib | |
| parent | 364b0e72d1b10d3baeae1fc85c237864be09c3f9 (diff) | |
| download | bcm5719-llvm-595c51342c8bb1d256e0d6bd2bfedc03899f60cd.tar.gz bcm5719-llvm-595c51342c8bb1d256e0d6bd2bfedc03899f60cd.zip | |
Some preparatory work for chained PCH. No functionality change.
llvm-svn: 107915
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Frontend/CompilerInstance.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Frontend/FrontendActions.cpp | 5 | ||||
| -rw-r--r-- | clang/lib/Frontend/GeneratePCH.cpp | 11 | ||||
| -rw-r--r-- | clang/lib/Frontend/PCHWriter.cpp | 3 |
4 files changed, 15 insertions, 6 deletions
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index 0ff70edf8b4..fa5338d30e6 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -255,6 +255,8 @@ void CompilerInstance::createPCHExternalASTSource(llvm::StringRef Path) { llvm::OwningPtr<ExternalASTSource> Source; Source.reset(createPCHExternalASTSource(Path, getHeaderSearchOpts().Sysroot, getPreprocessor(), getASTContext())); + // Remember the PCHReader, but in a non-owning way. + Reader = static_cast<PCHReader*>(Source.get()); getASTContext().setExternalSource(Source); } diff --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp index f0b86a9214a..400d35361c9 100644 --- a/clang/lib/Frontend/FrontendActions.cpp +++ b/clang/lib/Frontend/FrontendActions.cpp @@ -81,9 +81,10 @@ ASTConsumer *GeneratePCHAction::CreateASTConsumer(CompilerInstance &CI, return 0; if (CI.getFrontendOpts().RelocatablePCH) - return CreatePCHGenerator(CI.getPreprocessor(), OS, Sysroot.c_str()); + return CreatePCHGenerator(CI.getPreprocessor(), OS, + CI.getPCHReader(), Sysroot.c_str()); - return CreatePCHGenerator(CI.getPreprocessor(), OS); + return CreatePCHGenerator(CI.getPreprocessor(), OS, CI.getPCHReader()); } ASTConsumer *InheritanceViewAction::CreateASTConsumer(CompilerInstance &CI, diff --git a/clang/lib/Frontend/GeneratePCH.cpp b/clang/lib/Frontend/GeneratePCH.cpp index 6251bac0475..9be103e06eb 100644 --- a/clang/lib/Frontend/GeneratePCH.cpp +++ b/clang/lib/Frontend/GeneratePCH.cpp @@ -28,6 +28,7 @@ using namespace clang; namespace { class PCHGenerator : public SemaConsumer { const Preprocessor &PP; + const PCHReader *Chain; const char *isysroot; llvm::raw_ostream *Out; Sema *SemaPtr; @@ -35,6 +36,7 @@ namespace { public: explicit PCHGenerator(const Preprocessor &PP, + const PCHReader *Chain, const char *isysroot, llvm::raw_ostream *Out); virtual void InitializeSema(Sema &S) { SemaPtr = &S; } @@ -43,9 +45,11 @@ namespace { } PCHGenerator::PCHGenerator(const Preprocessor &PP, + const PCHReader *Chain, const char *isysroot, llvm::raw_ostream *OS) - : PP(PP), isysroot(isysroot), Out(OS), SemaPtr(0), StatCalls(0) { + : PP(PP), Chain(Chain), isysroot(isysroot), Out(OS), SemaPtr(0), + StatCalls(0) { // Install a stat() listener to keep track of all of the stat() // calls. @@ -64,7 +68,7 @@ void PCHGenerator::HandleTranslationUnit(ASTContext &Ctx) { // Emit the PCH file assert(SemaPtr && "No Sema?"); - Writer.WritePCH(*SemaPtr, StatCalls, isysroot); + Writer.WritePCH(*SemaPtr, StatCalls, Chain, isysroot); // Write the generated bitstream to "Out". Out->write((char *)&Buffer.front(), Buffer.size()); @@ -75,6 +79,7 @@ void PCHGenerator::HandleTranslationUnit(ASTContext &Ctx) { ASTConsumer *clang::CreatePCHGenerator(const Preprocessor &PP, llvm::raw_ostream *OS, + const PCHReader *Chain, const char *isysroot) { - return new PCHGenerator(PP, isysroot, OS); + return new PCHGenerator(PP, Chain, isysroot, OS); } diff --git a/clang/lib/Frontend/PCHWriter.cpp b/clang/lib/Frontend/PCHWriter.cpp index 8684a06eb0b..18ceef99c98 100644 --- a/clang/lib/Frontend/PCHWriter.cpp +++ b/clang/lib/Frontend/PCHWriter.cpp @@ -628,6 +628,7 @@ void PCHWriter::WriteBlockInfoBlock() { RECORD(VERSION_CONTROL_BRANCH_REVISION); RECORD(UNUSED_STATIC_FUNCS); RECORD(MACRO_DEFINITION_OFFSETS); + RECORD(CHAINED_METADATA); // SourceManager Block. BLOCK(SOURCE_MANAGER_BLOCK); @@ -2075,7 +2076,7 @@ PCHWriter::PCHWriter(llvm::BitstreamWriter &Stream) NumLexicalDeclContexts(0), NumVisibleDeclContexts(0) { } void PCHWriter::WritePCH(Sema &SemaRef, MemorizeStatCalls *StatCalls, - const char *isysroot) { + const PCHReader *Chain, const char *isysroot) { using namespace llvm; ASTContext &Context = SemaRef.Context; |

