diff options
| author | Ted Kremenek <kremenek@apple.com> | 2007-12-05 00:26:13 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2007-12-05 00:26:13 +0000 |
| commit | 166e505d27d0eb67f083febe5352c8f679376827 (patch) | |
| tree | 2bb8318703672f5bcc52fd902ca97f04365cc21f | |
| parent | e63414238836fd7e354fcfa404357e7a72fce119 (diff) | |
| download | bcm5719-llvm-166e505d27d0eb67f083febe5352c8f679376827.tar.gz bcm5719-llvm-166e505d27d0eb67f083febe5352c8f679376827.zip | |
Added serialization support of SourceManager to the clang driver.
llvm-svn: 44592
| -rw-r--r-- | clang/Driver/ASTConsumers.h | 3 | ||||
| -rw-r--r-- | clang/Driver/SerializationTest.cpp | 21 | ||||
| -rw-r--r-- | clang/Driver/clang.cpp | 3 |
3 files changed, 17 insertions, 10 deletions
diff --git a/clang/Driver/ASTConsumers.h b/clang/Driver/ASTConsumers.h index 43dd738c39e..a22113aebd7 100644 --- a/clang/Driver/ASTConsumers.h +++ b/clang/Driver/ASTConsumers.h @@ -20,6 +20,7 @@ namespace clang { class ASTConsumer; class Diagnostic; +class FileManager; struct LangOptions; ASTConsumer *CreateASTPrinter(std::ostream* OS = NULL); @@ -31,7 +32,7 @@ ASTConsumer *CreateDeadStoreChecker(Diagnostic &Diags); ASTConsumer *CreateUnitValsChecker(Diagnostic &Diags); ASTConsumer *CreateLLVMEmitter(Diagnostic &Diags, const LangOptions &Features); ASTConsumer *CreateCodeRewriterTest(Diagnostic &Diags); -ASTConsumer *CreateSerializationTest(Diagnostic &Diags); +ASTConsumer *CreateSerializationTest(Diagnostic &Diags, FileManager& FMgr); } // end clang namespace diff --git a/clang/Driver/SerializationTest.cpp b/clang/Driver/SerializationTest.cpp index 80049d4f2bb..0354f2b655f 100644 --- a/clang/Driver/SerializationTest.cpp +++ b/clang/Driver/SerializationTest.cpp @@ -16,6 +16,7 @@ #include "ASTConsumers.h" #include "clang/Basic/TargetInfo.h" +#include "clang/Basic/SourceManager.h" #include "clang/AST/AST.h" #include "clang/AST/ASTConsumer.h" #include "clang/AST/ASTContext.h" @@ -54,6 +55,7 @@ public: class SerializationTest : public ASTConsumer { ASTContext* Context; Diagnostic &Diags; + FileManager &FMgr; std::list<Decl*> Decls; enum { BasicMetadataBlock = 1, @@ -61,7 +63,9 @@ class SerializationTest : public ASTConsumer { DeclsBlock = 3 }; public: - SerializationTest(Diagnostic &d) : Context(NULL), Diags(d) {}; + SerializationTest(Diagnostic &d, FileManager& fmgr) + : Context(NULL), Diags(d), FMgr(fmgr) {}; + ~SerializationTest(); virtual void Initialize(ASTContext& context, unsigned) { @@ -79,8 +83,9 @@ private: } // end anonymous namespace -ASTConsumer* clang::CreateSerializationTest(Diagnostic &Diags) { - return new SerializationTest(Diags); +ASTConsumer* +clang::CreateSerializationTest(Diagnostic &Diags, FileManager& FMgr) { + return new SerializationTest(Diags,FMgr); } static void WritePreamble(llvm::BitstreamWriter& Stream) { @@ -171,8 +176,8 @@ void SerializationTest::Serialize(llvm::sys::Path& Filename, Sezr.EnterBlock(); // "Fake" emit the SourceManager. - llvm::cerr << "Faux-serializing: SourceManager.\n"; - Sezr.EmitPtr(&Context->SourceMgr); + llvm::cerr << "Serializing: SourceManager.\n"; + Sezr.Emit(Context->SourceMgr); // Emit the Target. llvm::cerr << "Serializing: Target.\n"; @@ -256,9 +261,9 @@ void SerializationTest::Deserialize(llvm::sys::Path& Filename, FoundBlock = Dezr.SkipToBlock(BasicMetadataBlock); assert (FoundBlock); - // "Fake" read the SourceManager. - llvm::cerr << "Faux-Deserializing: SourceManager.\n"; - Dezr.RegisterPtr(&Context->SourceMgr); + // Read the SourceManager. + llvm::cerr << "Deserializing: SourceManager.\n"; + SourceManager::CreateAndRegister(Dezr,FMgr); { // Read the TargetInfo. llvm::cerr << "Deserializing: Target.\n"; diff --git a/clang/Driver/clang.cpp b/clang/Driver/clang.cpp index eeaf6496e75..396fb65f4f9 100644 --- a/clang/Driver/clang.cpp +++ b/clang/Driver/clang.cpp @@ -905,7 +905,8 @@ static void ProcessInputFile(Preprocessor &PP, unsigned MainFileID, break; case TestSerialization: - Consumer = CreateSerializationTest(PP.getDiagnostics()); + Consumer = CreateSerializationTest(PP.getDiagnostics(), + HeaderInfo.getFileMgr()); break; case EmitLLVM: |

