aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-11-13 22:30:29 +0000
committerTed Kremenek <kremenek@apple.com>2007-11-13 22:30:29 +0000
commitea2fe9b435e1b55135de32dcac97366554706ac4 (patch)
tree05c3e5107bff3e225a1b81e4dcf83b8592b3ef7d
parentbd57e7c4754c0ce5d7d460041c8fd613e45c4319 (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.cpp21
-rw-r--r--include/clang/AST/Expr.h3
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);
};
//===----------------------------------------------------------------------===//