[cfe-commits] r68790 - in /cfe/trunk: include/clang/Frontend/PCHWriter.h lib/Frontend/PCHWriter.cpp tools/clang-cc/ASTConsumers.h tools/clang-cc/GeneratePCH.cpp tools/clang-cc/clang-cc.cpp
Chris Lattner
sabre at nondot.org
Fri Apr 10 10:15:23 PDT 2009
Author: lattner
Date: Fri Apr 10 12:15:23 2009
New Revision: 68790
URL: http://llvm.org/viewvc/llvm-project?rev=68790&view=rev
Log:
Arrange for the preprocessor to be passed down into the PCH writer.
Modified:
cfe/trunk/include/clang/Frontend/PCHWriter.h
cfe/trunk/lib/Frontend/PCHWriter.cpp
cfe/trunk/tools/clang-cc/ASTConsumers.h
cfe/trunk/tools/clang-cc/GeneratePCH.cpp
cfe/trunk/tools/clang-cc/clang-cc.cpp
Modified: cfe/trunk/include/clang/Frontend/PCHWriter.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/PCHWriter.h?rev=68790&r1=68789&r2=68790&view=diff
==============================================================================
--- cfe/trunk/include/clang/Frontend/PCHWriter.h (original)
+++ cfe/trunk/include/clang/Frontend/PCHWriter.h Fri Apr 10 12:15:23 2009
@@ -29,8 +29,9 @@
namespace clang {
-class ASTContext;
class SourceManager;
+class Preprocessor;
+class ASTContext;
/// \brief Writes a precompiled header containing the contents of a
/// translation unit.
@@ -76,6 +77,7 @@
unsigned NextTypeID;
void WriteSourceManagerBlock(SourceManager &SourceMgr);
+ void WritePreprocessor(Preprocessor &PP);
void WriteType(const Type *T);
void WriteTypesBlock(ASTContext &Context);
uint64_t WriteDeclContextLexicalBlock(ASTContext &Context, DeclContext *DC);
@@ -90,7 +92,7 @@
PCHWriter(llvm::BitstreamWriter &S);
/// \brief Write a precompiled header for the given AST context.
- void WritePCH(ASTContext &Context);
+ void WritePCH(ASTContext &Context, Preprocessor &PP);
/// \brief Emit a source location.
void AddSourceLocation(SourceLocation Loc, RecordData &Record);
Modified: cfe/trunk/lib/Frontend/PCHWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHWriter.cpp?rev=68790&r1=68789&r2=68790&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/PCHWriter.cpp (original)
+++ cfe/trunk/lib/Frontend/PCHWriter.cpp Fri Apr 10 12:15:23 2009
@@ -474,6 +474,13 @@
S.ExitBlock();
}
+/// \brief Writes the block containing the serialized form of the
+/// preprocessor.
+///
+void PCHWriter::WritePreprocessor(Preprocessor &PP) {
+}
+
+
/// \brief Write the representation of a type to the PCH stream.
void PCHWriter::WriteType(const Type *T) {
pch::ID &ID = TypeIDs[T];
@@ -659,7 +666,7 @@
PCHWriter::PCHWriter(llvm::BitstreamWriter &S)
: S(S), NextTypeID(pch::NUM_PREDEF_TYPE_IDS) { }
-void PCHWriter::WritePCH(ASTContext &Context) {
+void PCHWriter::WritePCH(ASTContext &Context, Preprocessor &PP) {
// Emit the file header.
S.Emit((unsigned)'C', 8);
S.Emit((unsigned)'P', 8);
@@ -673,6 +680,7 @@
// Write the remaining PCH contents.
S.EnterSubblock(pch::PCH_BLOCK_ID, 2);
WriteSourceManagerBlock(Context.getSourceManager());
+ WritePreprocessor(PP);
WriteTypesBlock(Context);
WriteDeclsBlock(Context);
S.ExitBlock();
Modified: cfe/trunk/tools/clang-cc/ASTConsumers.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-cc/ASTConsumers.h?rev=68790&r1=68789&r2=68790&view=diff
==============================================================================
--- cfe/trunk/tools/clang-cc/ASTConsumers.h (original)
+++ cfe/trunk/tools/clang-cc/ASTConsumers.h Fri Apr 10 12:15:23 2009
@@ -55,35 +55,33 @@
Diagnostic &Diags,
const LangOptions &Features,
const CompileOptions &CompileOpts,
- const std::string& InFile,
- const std::string& OutFile);
+ const std::string &InFile,
+ const std::string &OutFile);
ASTConsumer* CreateHTMLPrinter(const std::string &OutFile, Diagnostic &D,
- Preprocessor *PP, PreprocessorFactory* PPF);
+ Preprocessor *PP, PreprocessorFactory *PPF);
ASTConsumer *CreateSerializationTest(Diagnostic &Diags,
- FileManager& FMgr);
+ FileManager &FMgr);
-ASTConsumer *CreateASTSerializer(const std::string& InFile,
- const std::string& EmitDir,
+ASTConsumer *CreateASTSerializer(const std::string &InFile,
+ const std::string &EmitDir,
Diagnostic &Diags);
-ASTConsumer *CreatePCHGenerator(Diagnostic &Diags,
- const LangOptions &Features,
- const std::string& InFile,
- const std::string& OutFile);
+ASTConsumer *CreatePCHGenerator(Preprocessor &PP,
+ const std::string &OutFile);
-ASTConsumer *CreateBlockRewriter(const std::string& InFile,
- const std::string& OutFile,
+ASTConsumer *CreateBlockRewriter(const std::string &InFile,
+ const std::string &OutFile,
Diagnostic &Diags,
const LangOptions &LangOpts);
ASTConsumer *CreateInheritanceViewer(const std::string& clsname);
-ASTConsumer* CreateAnalysisConsumer(Diagnostic &diags, Preprocessor* pp,
- PreprocessorFactory* ppf,
- const LangOptions& lopts,
- const std::string& output);
+ASTConsumer* CreateAnalysisConsumer(Diagnostic &diags, Preprocessor *pp,
+ PreprocessorFactory *ppf,
+ const LangOptions &lopts,
+ const std::string &output);
} // end clang namespace
Modified: cfe/trunk/tools/clang-cc/GeneratePCH.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-cc/GeneratePCH.cpp?rev=68790&r1=68789&r2=68790&view=diff
==============================================================================
--- cfe/trunk/tools/clang-cc/GeneratePCH.cpp (original)
+++ cfe/trunk/tools/clang-cc/GeneratePCH.cpp Fri Apr 10 12:15:23 2009
@@ -12,9 +12,11 @@
//
//===----------------------------------------------------------------------===//
+#include "ASTConsumers.h"
#include "clang/Frontend/PCHWriter.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTConsumer.h"
+#include "clang/Lex/Preprocessor.h"
#include "llvm/Bitcode/BitstreamWriter.h"
#include "llvm/System/Path.h"
#include "llvm/Support/Compiler.h"
@@ -27,19 +29,19 @@
namespace {
class VISIBILITY_HIDDEN PCHGenerator : public ASTConsumer {
- Diagnostic &Diags;
+ Preprocessor &PP;
std::string OutFile;
public:
- explicit PCHGenerator(Diagnostic &Diags, const std::string &OutFile)
- : Diags(Diags), OutFile(OutFile) { }
+ explicit PCHGenerator(Preprocessor &PP, const std::string &OutFile)
+ : PP(PP), OutFile(OutFile) { }
virtual void HandleTranslationUnit(ASTContext &Ctx);
};
}
void PCHGenerator::HandleTranslationUnit(ASTContext &Ctx) {
- if (Diags.hasErrorOccurred())
+ if (PP.getDiagnostics().hasErrorOccurred())
return;
// Write the PCH contents into a buffer
@@ -48,7 +50,7 @@
PCHWriter Writer(Stream);
// Emit the PCH file
- Writer.WritePCH(Ctx);
+ Writer.WritePCH(Ctx, PP);
// Open up the PCH file.
std::string ErrMsg;
@@ -66,13 +68,7 @@
Out.flush();
}
-namespace clang {
-
-ASTConsumer *CreatePCHGenerator(Diagnostic &Diags,
- const LangOptions &Features,
- const std::string& InFile,
- const std::string& OutFile) {
- return new PCHGenerator(Diags, OutFile);
-}
-
+ASTConsumer *clang::CreatePCHGenerator(Preprocessor &PP,
+ const std::string &OutFile) {
+ return new PCHGenerator(PP, OutFile);
}
Modified: cfe/trunk/tools/clang-cc/clang-cc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-cc/clang-cc.cpp?rev=68790&r1=68789&r2=68790&view=diff
==============================================================================
--- cfe/trunk/tools/clang-cc/clang-cc.cpp (original)
+++ cfe/trunk/tools/clang-cc/clang-cc.cpp Fri Apr 10 12:15:23 2009
@@ -1529,7 +1529,8 @@
return CreateASTSerializer(InFile, OutputFile, Diag);
case GeneratePCH:
- return CreatePCHGenerator(Diag, LangOpts, InFile, OutputFile);
+ assert(PP && "Generate PCH doesn't work from serialized file yet");
+ return CreatePCHGenerator(*PP, OutputFile);
case RewriteObjC:
return CreateCodeRewriterTest(InFile, OutputFile, Diag, LangOpts);
More information about the cfe-commits
mailing list