summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/StmtSerialization.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2008-12-22 21:35:02 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2008-12-22 21:35:02 +0000
commit9b244a8797ebcc5d315246d90a74fed432a6972b (patch)
treeb9aea8b9ccb110f2d296a732afd983230956a481 /clang/lib/AST/StmtSerialization.cpp
parent014caa431ce555ea1420f8d173865c9a204d694a (diff)
downloadbcm5719-llvm-9b244a8797ebcc5d315246d90a74fed432a6972b.tar.gz
bcm5719-llvm-9b244a8797ebcc5d315246d90a74fed432a6972b.zip
Full AST support and better Sema support for C++ try-catch.
llvm-svn: 61346
Diffstat (limited to 'clang/lib/AST/StmtSerialization.cpp')
-rw-r--r--clang/lib/AST/StmtSerialization.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/lib/AST/StmtSerialization.cpp b/clang/lib/AST/StmtSerialization.cpp
index 2d6f7557195..a6c95b9c046 100644
--- a/clang/lib/AST/StmtSerialization.cpp
+++ b/clang/lib/AST/StmtSerialization.cpp
@@ -1540,3 +1540,19 @@ CXXCatchStmt::CreateImpl(llvm::Deserializer& D, ASTContext& C) {
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);
+}
OpenPOWER on IntegriCloud