summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseStmt.cpp
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2014-07-06 22:53:19 +0000
committerNico Weber <nicolasweber@gmx.de>2014-07-06 22:53:19 +0000
commiteb61d4d7c2fdc089c5625aa1128c844edd51285f (patch)
tree6dd096b3b22dd563046e02f1301e524b8545d3a1 /clang/lib/Parse/ParseStmt.cpp
parentc7d0596429b6051c212a5ae1864c8635ab8ae906 (diff)
downloadbcm5719-llvm-eb61d4d7c2fdc089c5625aa1128c844edd51285f.tar.gz
bcm5719-llvm-eb61d4d7c2fdc089c5625aa1128c844edd51285f.zip
Sema: Check that __leave is contained in a __try block.
Give scope a SEHTryScope bit, set that in ParseSEHTry(), and let Sema walk the scope chain to find the SEHTry parent on __leave statements. (They are rare enough that it seems better to do the walk instead of giving Scope a SEHTryParent pointer -- this is similar to AtCatchScope.) llvm-svn: 212422
Diffstat (limited to 'clang/lib/Parse/ParseStmt.cpp')
-rw-r--r--clang/lib/Parse/ParseStmt.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp
index e81945437bf..d29da837c09 100644
--- a/clang/lib/Parse/ParseStmt.cpp
+++ b/clang/lib/Parse/ParseStmt.cpp
@@ -427,7 +427,8 @@ StmtResult Parser::ParseSEHTryBlockCommon(SourceLocation TryLoc) {
if(Tok.isNot(tok::l_brace))
return StmtError(Diag(Tok, diag::err_expected) << tok::l_brace);
- StmtResult TryBlock(ParseCompoundStatement());
+ StmtResult TryBlock(ParseCompoundStatement(/*isStmtExpr=*/false,
+ Scope::DeclScope | Scope::SEHTryScope));
if(TryBlock.isInvalid())
return TryBlock;
OpenPOWER on IntegriCloud