Correctly reject gotos in function-level try blocks.  PR14225.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167184 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/SemaCXX/scope-check.cpp b/test/SemaCXX/scope-check.cpp
index 78228c0..8fd23f4 100644
--- a/test/SemaCXX/scope-check.cpp
+++ b/test/SemaCXX/scope-check.cpp
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks %s -Wno-unreachable-code
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -std=gnu++11 %s -Wno-unreachable-code
+// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -fcxx-exceptions %s -Wno-unreachable-code
+// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -fcxx-exceptions -std=gnu++11 %s -Wno-unreachable-code
 
 namespace test0 {
   struct D { ~D(); };
@@ -260,3 +260,17 @@
     goto *ip;
   }
 }
+
+// PR14225
+namespace test15 {
+  void f1() try {
+    goto x; // expected-error {{goto into protected scope}}
+  } catch(...) {  // expected-note {{jump bypasses initialization of catch block}}
+    x: ;
+  }
+  void f2() try {  // expected-note {{jump bypasses initialization of try block}}
+    x: ;
+  } catch(...) {
+    goto x; // expected-error {{goto into protected scope}}
+  }
+}