From: Ted Kremenek Date: Wed, 7 Nov 2007 07:19:30 +0000 (+0000) Subject: Implemented serialization of IfStmt. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4210f3dfd73ad3482f9cfa0a382e1fd78f22976d;p=clang Implemented serialization of IfStmt. Fixed declarations of several "directEmit" methods of classes that subclass Stmt that were missing a "virtual" keyword. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43814 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index 7d82d0547e..c6af9a50c7 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -52,6 +52,9 @@ Stmt* Stmt::Materialize(llvm::Deserializer& D) { case DefaultStmtClass: return DefaultStmt::directMaterialize(D); + case IfStmtClass: + return IfStmt::directMaterialize(D); + case IntegerLiteralClass: return IntegerLiteral::directMaterialize(D); @@ -182,6 +185,21 @@ DefaultStmt* DefaultStmt::directMaterialize(llvm::Deserializer& D) { return stmt; } +void IfStmt::directEmit(llvm::Serializer& S) const { + S.Emit(IfLoc); + S.EmitOwnedPtr(getCond()); + S.EmitOwnedPtr(getThen()); + S.EmitOwnedPtr(getElse()); +} + +IfStmt* IfStmt::directMaterialize(llvm::Deserializer& D) { + SourceLocation L = SourceLocation::ReadVal(D); + Expr* Cond = D.ReadOwnedPtr(); + Stmt* Then = D.ReadOwnedPtr(); + Stmt* Else = D.ReadOwnedPtr(); + return new IfStmt(L,Cond,Then,Else); +} + void IntegerLiteral::directEmit(llvm::Serializer& S) const { S.Emit(Loc); S.Emit(getType()); diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index 9b6a8e345b..6a06e5702a 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -340,7 +340,7 @@ public: virtual child_iterator child_begin(); virtual child_iterator child_end(); - void directEmit(llvm::Serializer& S) const; + virtual void directEmit(llvm::Serializer& S) const; static ParenExpr* directMaterialize(llvm::Deserializer& D); }; diff --git a/include/clang/AST/Stmt.h b/include/clang/AST/Stmt.h index 46059c56bf..523eda69a0 100644 --- a/include/clang/AST/Stmt.h +++ b/include/clang/AST/Stmt.h @@ -402,6 +402,9 @@ public: // Iterators virtual child_iterator child_begin(); virtual child_iterator child_end(); + + virtual void directEmit(llvm::Serializer& S) const; + static IfStmt* directMaterialize(llvm::Deserializer& D); }; /// SwitchStmt - This represents a 'switch' stmt. @@ -448,7 +451,7 @@ public: virtual child_iterator child_begin(); virtual child_iterator child_end(); - void directEmit(llvm::Serializer& S) const; + virtual void directEmit(llvm::Serializer& S) const; static SwitchStmt* directMaterialize(llvm::Deserializer& D); }; @@ -644,7 +647,7 @@ public: virtual child_iterator child_begin(); virtual child_iterator child_end(); - void directEmit(llvm::Serializer& S) const; + virtual void directEmit(llvm::Serializer& S) const; static BreakStmt* directMaterialize(llvm::Deserializer& D); };