From: Ted Kremenek Date: Wed, 7 Nov 2007 00:48:04 +0000 (+0000) Subject: Implemented serialization of LabelStmts. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b15132fda52046ba65eafd6f4b448f7aa16b7e8d;p=clang Implemented serialization of LabelStmts. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43800 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index e27c703eb4..9f2a7cb84d 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -46,6 +46,9 @@ Stmt* Stmt::Materialize(llvm::Deserializer& D) { case IntegerLiteralClass: return IntegerLiteral::directMaterialize(D); + case LabelStmtClass: + return LabelStmt::directMaterialize(D); + case NullStmtClass: return NullStmt::directMaterialize(D); @@ -140,6 +143,19 @@ IntegerLiteral* IntegerLiteral::directMaterialize(llvm::Deserializer& D) { return expr; } +void LabelStmt::directEmit(llvm::Serializer& S) const { + S.EmitPtr(Label); + S.Emit(IdentLoc); + S.EmitOwnedPtr(SubStmt); +} + +LabelStmt* LabelStmt::directMaterialize(llvm::Deserializer& D) { + IdentifierInfo* Label = D.ReadPtr(); + SourceLocation IdentLoc = SourceLocation::ReadVal(D); + Stmt* SubStmt = D.ReadOwnedPtr(); + return new LabelStmt(IdentLoc,Label,SubStmt); +} + void NullStmt::directEmit(llvm::Serializer& S) const { S.Emit(SemiLoc); } diff --git a/include/clang/AST/Stmt.h b/include/clang/AST/Stmt.h index 102b3f82f6..67cf0c0891 100644 --- a/include/clang/AST/Stmt.h +++ b/include/clang/AST/Stmt.h @@ -349,6 +349,9 @@ public: // Iterators virtual child_iterator child_begin(); virtual child_iterator child_end(); + + virtual void directEmit(llvm::Serializer& S) const; + static LabelStmt* directMaterialize(llvm::Deserializer& D); };