Full AST support and better Sema support for C++ try-catch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61346 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/StmtSerialization.cpp b/lib/AST/StmtSerialization.cpp
index 2d6f755..a6c95b9 100644
--- a/lib/AST/StmtSerialization.cpp
+++ b/lib/AST/StmtSerialization.cpp
@@ -1540,3 +1540,19 @@
   Stmt *HandlerBlock = D.ReadOwnedPtr<Stmt>(C);
   return new CXXCatchStmt(CatchLoc, ExDecl, HandlerBlock);
 }
+
+void CXXTryStmt::EmitImpl(llvm::Serializer& S) const {
+  S.Emit(TryLoc);
+  S.EmitInt(Stmts.size());
+  S.BatchEmitOwnedPtrs(Stmts.size(), &Stmts[0]);
+}
+
+CXXTryStmt *
+CXXTryStmt::CreateImpl(llvm::Deserializer& D, ASTContext& C) {
+  SourceLocation TryLoc = SourceLocation::ReadVal(D);
+  unsigned size = D.ReadInt();
+  llvm::SmallVector<Stmt*, 4> Stmts(size);
+  D.BatchReadOwnedPtrs<Stmt>(size, &Stmts[0], C);
+
+  return new CXXTryStmt(TryLoc, Stmts[0], &Stmts[1], size - 1);
+}