aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);
};
//===----------------------------------------------------------------------===//