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
diff --git a/clang/test/SemaCXX/__try.cpp b/clang/test/SemaCXX/__try.cpp
index ac79ee7..28a3701 100644
--- a/clang/test/SemaCXX/__try.cpp
+++ b/clang/test/SemaCXX/__try.cpp
@@ -83,8 +83,7 @@
   // Clang accepts try with __finally. MSVC doesn't. (Maybe a Borland thing?)
   // __leave in mixed blocks isn't supported.
   try {
-    // FIXME: should say "__leave stmt not in __try block":
-    __leave; // expected-error{{not implemented yet}}
+    __leave; // expected-error{{'__leave' statement not in __try block}}
   } __finally {
   }
 }