diff options
Diffstat (limited to 'AST/StmtSerialization.cpp')
-rw-r--r-- | AST/StmtSerialization.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
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<Expr>(); + assert (isa<FloatingLiteral>(expr) || isa<IntegerLiteral>(expr)); + return new ImaginaryLiteral(expr,t); +} + void IndirectGotoStmt::directEmit(llvm::Serializer& S) const { S.EmitPtr(Target); } |