Sema: Check that __leave is contained in a __try block.
authorNico Weber <nicolasweber@gmx.de>
Sun, 6 Jul 2014 22:53:19 +0000 (22:53 +0000)
committerNico Weber <nicolasweber@gmx.de>
Sun, 6 Jul 2014 22:53:19 +0000 (22:53 +0000)
commiteb61d4d7c2fdc089c5625aa1128c844edd51285f
tree6dd096b3b22dd563046e02f1301e524b8545d3a1
parentc7d0596429b6051c212a5ae1864c8635ab8ae906
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
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/include/clang/Sema/Scope.h
clang/lib/Parse/ParseStmt.cpp
clang/lib/Sema/Scope.cpp
clang/lib/Sema/SemaStmt.cpp
clang/test/Sema/__try.c
clang/test/SemaCXX/__try.cpp