From 1c72de1be77fc43cc27e9bf1cbfe7bd25bee2f81 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Wed, 7 Nov 2007 18:53:02 +0000 Subject: [PATCH] Implemented serialization of ImaginaryLiteral. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43833 91177308-0d34-0410-b5e6-96231b3b80d8 --- AST/StmtSerialization.cpp | 15 +++++++++++++++ include/clang/AST/Expr.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index 4e13b98a69..ffe4312e63 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -72,6 +72,9 @@ Stmt* Stmt::Materialize(llvm::Deserializer& D) { case IfStmtClass: return IfStmt::directMaterialize(D); + + case ImaginaryLiteralClass: + return ImaginaryLiteral::directMaterialize(D); case IndirectGotoStmtClass: return IndirectGotoStmt::directMaterialize(D); @@ -307,6 +310,18 @@ IfStmt* IfStmt::directMaterialize(llvm::Deserializer& D) { return new IfStmt(L,Cond,Then,Else); } +void ImaginaryLiteral::directEmit(llvm::Serializer& S) const { + S.Emit(getType()); + S.EmitOwnedPtr(Val); +} + +ImaginaryLiteral* ImaginaryLiteral::directMaterialize(llvm::Deserializer& D) { + QualType t = QualType::ReadVal(D); + Expr* expr = D.ReadOwnedPtr(); + assert (isa(expr) || isa(expr)); + return new ImaginaryLiteral(expr,t); +} + void IndirectGotoStmt::directEmit(llvm::Serializer& S) const { S.EmitPtr(Target); } diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index 9c0f076b8c..c5f477747f 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -291,6 +291,9 @@ public: // Iterators virtual child_iterator child_begin(); virtual child_iterator child_end(); + + virtual void directEmit(llvm::Serializer& S) const; + static ImaginaryLiteral* directMaterialize(llvm::Deserializer& D); }; /// StringLiteral - This represents a string literal expression, e.g. "foo" -- 2.40.0