]> granicus.if.org Git - clang/commitdiff
Implemented serialization for SizeOfAlignOfTypeExpr.
authorTed Kremenek <kremenek@apple.com>
Tue, 13 Nov 2007 22:30:29 +0000 (22:30 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 13 Nov 2007 22:30:29 +0000 (22:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44075 91177308-0d34-0410-b5e6-96231b3b80d8

AST/StmtSerialization.cpp
include/clang/AST/Expr.h

index 44796c8291ae63ad1e7f483027ae76936864d92c..10563bd0ca794e9763d8991c06de920b8ebda98e 100644 (file)
@@ -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);
index 73aabd2af3e26ce355b29978d6d9119990483a0b..254a497608f2ac3b4dd125aa7ace18aa3116a38c 100644 (file)
@@ -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);
 };
 
 //===----------------------------------------------------------------------===//