From: Ted Kremenek Date: Wed, 7 Nov 2007 18:45:55 +0000 (+0000) Subject: Implemented serialization of FloatingLiteral. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=612c9b9ca73593b3194866c9e1a51554db9752e7;p=clang Implemented serialization of FloatingLiteral. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43832 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index 0cff7c5e67..4e13b98a69 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -60,6 +60,9 @@ Stmt* Stmt::Materialize(llvm::Deserializer& D) { case DoStmtClass: return DoStmt::directMaterialize(D); + + case FloatingLiteralClass: + return FloatingLiteral::directMaterialize(D); case ForStmtClass: return ForStmt::directMaterialize(D); @@ -244,6 +247,20 @@ DoStmt* DoStmt::directMaterialize(llvm::Deserializer& D) { return new DoStmt(Body,Cond,DoLoc); } +void FloatingLiteral::directEmit(llvm::Serializer& S) const { + S.Emit(Loc); + S.Emit(getType()); + S.Emit(Value); +} + +FloatingLiteral* FloatingLiteral::directMaterialize(llvm::Deserializer& D) { + SourceLocation Loc = SourceLocation::ReadVal(D); + QualType t = QualType::ReadVal(D); + llvm::APFloat Val = llvm::APFloat::ReadVal(D); + FloatingLiteral* expr = new FloatingLiteral(Val,t,Loc); + return expr; +} + void ForStmt::directEmit(llvm::Serializer& S) const { S.Emit(ForLoc); S.EmitOwnedPtr(getInit()); diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index 7d3827871e..9c0f076b8c 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -263,6 +263,9 @@ public: // Iterators virtual child_iterator child_begin(); virtual child_iterator child_end(); + + virtual void directEmit(llvm::Serializer& S) const; + static FloatingLiteral* directMaterialize(llvm::Deserializer& D); }; /// ImaginaryLiteral - We support imaginary integer and floating point literals,