diff options
Diffstat (limited to 'lib/Sema')
-rw-r--r-- | lib/Sema/SemaStmt.cpp | 6 | ||||
-rw-r--r-- | lib/Sema/TreeTransform.h | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp index 76410e20ac..e9866ffb3b 100644 --- a/lib/Sema/SemaStmt.cpp +++ b/lib/Sema/SemaStmt.cpp @@ -2746,6 +2746,12 @@ Sema::ActOnSEHTryBlock(bool IsCXXTry, } StmtResult +Sema::ActOnSEHLeaveStmt(SourceLocation LeaveLoc) +{ + return Owned(SEHLeaveStmt::Create(Context, LeaveLoc)); +} + +StmtResult Sema::ActOnSEHExceptBlock(SourceLocation Loc, Expr *FilterExpr, Stmt *Block) { diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index 19636f4143..10eb52a890 100644 --- a/lib/Sema/TreeTransform.h +++ b/lib/Sema/TreeTransform.h @@ -1361,6 +1361,10 @@ public: return getSema().ActOnSEHTryBlock(IsCXXTry,TryLoc,TryBlock,Handler); } + StmtResult RebuildSEHLeaveStmt(SourceLocation LeaveLoc) { + return getSema().ActOnSEHLeaveStmt(LeaveLoc); + } + StmtResult RebuildSEHExceptStmt(SourceLocation Loc, Expr *FilterExpr, Stmt *Block) { @@ -6001,6 +6005,12 @@ TreeTransform<Derived>::TransformSEHTryStmt(SEHTryStmt *S) { template<typename Derived> StmtResult +TreeTransform<Derived>::TransformSEHLeaveStmt(SEHLeaveStmt *S) { + return getDerived().RebuildSEHLeaveStmt(S->getLeaveLoc()); +} + +template<typename Derived> +StmtResult TreeTransform<Derived>::TransformSEHFinallyStmt(SEHFinallyStmt *S) { StmtResult Block; // = getDerived().TransformCompoundStatement(S->getBlock()); if(Block.isInvalid()) return StmtError(); |