From: Eli Friedman Date: Mon, 9 Jun 2008 20:02:51 +0000 (+0000) Subject: Get -serialize working again, plus a bit of minor cleanup. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d8a65c16bb35954592d5f6b4939c9850c672e901;p=clang Get -serialize working again, plus a bit of minor cleanup. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52152 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Driver/ASTConsumers.cpp b/Driver/ASTConsumers.cpp index 5d45f312e2..580563b05b 100644 --- a/Driver/ASTConsumers.cpp +++ b/Driver/ASTConsumers.cpp @@ -867,31 +867,21 @@ namespace { class ASTSerializer : public ASTConsumer { protected: - Diagnostic &Diags; TranslationUnit* TU; public: - ASTSerializer(Diagnostic& diags) : Diags(diags), TU(0) {} - - virtual ~ASTSerializer() { delete TU; } - - virtual void InitializeTU(TranslationUnit &TU) { - TU.SetOwnsDecls(false); - } - - virtual void HandleTopLevelDecl(Decl *D) { - if (Diags.hasErrorOccurred()) - return; - - if (TU) TU->AddTopLevelDecl(D); + ASTSerializer() : TU(0) {} + + virtual void InitializeTU(TranslationUnit &tu) { + TU = &tu; } + }; - + class SingleFileSerializer : public ASTSerializer { const llvm::sys::Path FName; public: - SingleFileSerializer(const llvm::sys::Path& F, Diagnostic &diags) - : ASTSerializer(diags), FName(F) {} + SingleFileSerializer(const llvm::sys::Path& F) : FName(F) {} ~SingleFileSerializer() { EmitASTBitcodeFile(TU, FName); @@ -901,8 +891,7 @@ public: class BuildSerializer : public ASTSerializer { llvm::sys::Path EmitDir; public: - BuildSerializer(const llvm::sys::Path& dir, Diagnostic &diags) - : ASTSerializer(diags), EmitDir(dir) {} + BuildSerializer(const llvm::sys::Path& dir) : EmitDir(dir) {} ~BuildSerializer() { @@ -977,7 +966,7 @@ ASTConsumer* clang::CreateASTSerializer(const std::string& InFile, // FIXME: We should probably only allow using BuildSerializer when // the ASTs come from parsed source files, and not from .ast files. - return new BuildSerializer(EmitDir, Diags); + return new BuildSerializer(EmitDir); } // The user did not specify an output directory for serialized ASTs. @@ -986,5 +975,5 @@ ASTConsumer* clang::CreateASTSerializer(const std::string& InFile, llvm::sys::Path FName(InFile.c_str()); FName.appendSuffix("ast"); - return new SingleFileSerializer(FName, Diags); + return new SingleFileSerializer(FName); }