Implemented serialization of InitListExpr.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44137 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp
index 2c1205e..d4ddf4c 100644
--- a/AST/StmtSerialization.cpp
+++ b/AST/StmtSerialization.cpp
@@ -108,7 +108,10 @@
       return ImplicitCastExpr::CreateImpl(D);
       
     case IndirectGotoStmtClass:
-      return IndirectGotoStmt::CreateImpl(D);      
+      return IndirectGotoStmt::CreateImpl(D);
+      
+    case InitListExprClass:
+      return InitListExpr::CreateImpl(D);
       
     case IntegerLiteralClass:
       return IntegerLiteral::CreateImpl(D);
@@ -512,6 +515,24 @@
   return new IndirectGotoStmt(Target);
 }
 
+void InitListExpr::EmitImpl(Serializer& S) const {
+  S.Emit(LBraceLoc);
+  S.Emit(RBraceLoc);
+  S.EmitInt(NumInits);
+  S.BatchEmitOwnedPtrs(NumInits,InitExprs);
+}
+
+InitListExpr* InitListExpr::CreateImpl(Deserializer& D) {
+  InitListExpr* expr = new InitListExpr();
+  expr->LBraceLoc = SourceLocation::ReadVal(D);
+  expr->RBraceLoc = SourceLocation::ReadVal(D);
+  expr->NumInits = D.ReadInt();
+  assert(expr->NumInits);
+  expr->InitExprs = new Expr*[expr->NumInits];
+  D.BatchReadOwnedPtrs(expr->NumInits,expr->InitExprs);
+  return expr;
+}
+
 void IntegerLiteral::EmitImpl(Serializer& S) const {
   S.Emit(Loc);
   S.Emit(getType());