Revised serialization of CaseStmt to emit all of the owned pointers (its
subexpressions) all together in one block at the end.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43862 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp
index 86d52a4..99a14f2 100644
--- a/AST/StmtSerialization.cpp
+++ b/AST/StmtSerialization.cpp
@@ -190,17 +190,14 @@
 void CaseStmt::directEmit(Serializer& S) const {
   S.Emit(CaseLoc);
   S.EmitPtr(getNextSwitchCase());
-  S.BatchEmitOwnedPtrs(getLHS(),getRHS(),getSubStmt());
+  S.BatchEmitOwnedPtrs((unsigned) END_EXPR,&SubExprs[0]);
 }
 
 CaseStmt* CaseStmt::directMaterialize(Deserializer& D) {
   SourceLocation CaseLoc = SourceLocation::ReadVal(D);
-  Expr *LHS, *RHS;
-  Stmt* SubStmt;
-  D.BatchReadOwnedPtrs(LHS,RHS,SubStmt);
-  
-  CaseStmt* stmt = new CaseStmt(LHS,RHS,SubStmt,CaseLoc);
-  stmt->setNextSwitchCase(D.ReadPtr<SwitchCase>());  
+  CaseStmt* stmt = new CaseStmt(NULL,NULL,NULL,CaseLoc);  
+  D.ReadPtr(stmt->NextSwitchCase);
+  D.BatchReadOwnedPtrs((unsigned) END_EXPR,&stmt->SubExprs[0]);
   return stmt;
 }