summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/GeneratePCH.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2010-07-30 00:29:29 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2010-07-30 00:29:29 +0000
commit07a89a83d4db0b3f241c70d5bbb518631ff90cfd (patch)
tree04d2e40c51deb9492c53f280f108ba097a08c087 /clang/lib/Frontend/GeneratePCH.cpp
parent0c7476ad590d2263111430b5654127d2003afdca (diff)
downloadbcm5719-llvm-07a89a83d4db0b3f241c70d5bbb518631ff90cfd.tar.gz
bcm5719-llvm-07a89a83d4db0b3f241c70d5bbb518631ff90cfd.zip
Make macro weirdness in chained PCH work. This required changing the way PCHReader and PCHWriter are initialized to correctly pick up all initializer. On the upside, this means that there is far less repetition in the dependent PCH now.
llvm-svn: 109823
Diffstat (limited to 'clang/lib/Frontend/GeneratePCH.cpp')
-rw-r--r--clang/lib/Frontend/GeneratePCH.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/clang/lib/Frontend/GeneratePCH.cpp b/clang/lib/Frontend/GeneratePCH.cpp
index 422a4b62647..561a68a6ef6 100644
--- a/clang/lib/Frontend/GeneratePCH.cpp
+++ b/clang/lib/Frontend/GeneratePCH.cpp
@@ -37,19 +37,20 @@ namespace {
PCHWriter Writer;
public:
- PCHGenerator(const Preprocessor &PP, PCHReader *Chain,
+ PCHGenerator(const Preprocessor &PP, bool Chaining,
const char *isysroot, llvm::raw_ostream *Out);
virtual void InitializeSema(Sema &S) { SemaPtr = &S; }
virtual void HandleTranslationUnit(ASTContext &Ctx);
+ virtual PCHDeserializationListener *GetPCHDeserializationListener();
};
}
PCHGenerator::PCHGenerator(const Preprocessor &PP,
- PCHReader *Chain,
+ bool Chaining,
const char *isysroot,
llvm::raw_ostream *OS)
- : PP(PP), isysroot(isysroot), Out(OS), SemaPtr(0), StatCalls(0),
- Stream(Buffer), Writer(Stream, Chain) {
+ : PP(PP), isysroot(isysroot), Out(OS), SemaPtr(0),
+ StatCalls(0), Stream(Buffer), Writer(Stream) {
// Install a stat() listener to keep track of all of the stat()
// calls.
@@ -57,7 +58,7 @@ PCHGenerator::PCHGenerator(const Preprocessor &PP,
// If we have a chain, we want new stat calls only, so install the memorizer
// *after* the already installed PCHReader's stat cache.
PP.getFileManager().addStatCache(StatCalls,
- /*AtBeginning=*/!Chain);
+ /*AtBeginning=*/!Chaining);
}
void PCHGenerator::HandleTranslationUnit(ASTContext &Ctx) {
@@ -78,9 +79,13 @@ void PCHGenerator::HandleTranslationUnit(ASTContext &Ctx) {
Buffer.clear();
}
+PCHDeserializationListener *PCHGenerator::GetPCHDeserializationListener() {
+ return &Writer;
+}
+
ASTConsumer *clang::CreatePCHGenerator(const Preprocessor &PP,
llvm::raw_ostream *OS,
- PCHReader *Chain,
+ bool Chaining,
const char *isysroot) {
- return new PCHGenerator(PP, Chain, isysroot, OS);
+ return new PCHGenerator(PP, Chaining, isysroot, OS);
}
OpenPOWER on IntegriCloud