diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-11-13 22:30:29 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-11-13 22:30:29 +0000 |
commit | ea2fe9b435e1b55135de32dcac97366554706ac4 (patch) | |
tree | 05c3e5107bff3e225a1b81e4dcf83b8592b3ef7d | |
parent | bd57e7c4754c0ce5d7d460041c8fd613e45c4319 (diff) |
Implemented serialization for SizeOfAlignOfTypeExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44075 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | AST/StmtSerialization.cpp | 21 | ||||
-rw-r--r-- | include/clang/AST/Expr.h | 3 |
2 files changed, 24 insertions, 0 deletions
diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index 44796c8291..10563bd0ca 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -125,6 +125,9 @@ Stmt* Stmt::Create(Deserializer& D) { case ReturnStmtClass: return ReturnStmt::CreateImpl(D); + case SizeOfAlignOfTypeExprClass: + return SizeOfAlignOfTypeExpr::CreateImpl(D); + case StmtExprClass: return StmtExpr::CreateImpl(D); @@ -574,6 +577,24 @@ ReturnStmt* ReturnStmt::CreateImpl(Deserializer& D) { return new ReturnStmt(RetLoc,RetExpr); } +void SizeOfAlignOfTypeExpr::EmitImpl(Serializer& S) const { + S.EmitBool(isSizeof); + S.Emit(Ty); + S.Emit(getType()); + S.Emit(OpLoc); + S.Emit(RParenLoc); +} + +SizeOfAlignOfTypeExpr* SizeOfAlignOfTypeExpr::CreateImpl(Deserializer& D) { + bool isSizeof = D.ReadBool(); + QualType Ty = QualType::ReadVal(D); + QualType Res = QualType::ReadVal(D); + SourceLocation OpLoc = SourceLocation::ReadVal(D); + SourceLocation RParenLoc = SourceLocation::ReadVal(D); + + return new SizeOfAlignOfTypeExpr(isSizeof,Ty,Res,OpLoc,RParenLoc); +} + void StmtExpr::EmitImpl(Serializer& S) const { S.Emit(getType()); S.Emit(LParenLoc); diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index 73aabd2af3..254a497608 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -466,6 +466,9 @@ public: // Iterators virtual child_iterator child_begin(); virtual child_iterator child_end(); + + virtual void EmitImpl(llvm::Serializer& S) const; + static SizeOfAlignOfTypeExpr* CreateImpl(llvm::Deserializer& D); }; //===----------------------------------------------------------------------===// |