Nested try-catch-filter testcase.
authorDuncan Sands <baldrick@free.fr>
Wed, 4 Jul 2007 20:48:48 +0000 (20:48 +0000)
committerDuncan Sands <baldrick@free.fr>
Wed, 4 Jul 2007 20:48:48 +0000 (20:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37874 91177308-0d34-0410-b5e6-96231b3b80d8

test/C++Frontend/2007-07-04-NestedCatches.cpp [new file with mode: 0644]

diff --git a/test/C++Frontend/2007-07-04-NestedCatches.cpp b/test/C++Frontend/2007-07-04-NestedCatches.cpp
new file mode 100644 (file)
index 0000000..035d5bb
--- /dev/null
@@ -0,0 +1,32 @@
+// RUN: %llvmgxx %s -S -emit-llvm -O2 -o - | \
+// RUN:   ignore grep {eh\.selector.*One.*Two.*Three.*Four.*Five.*Six.*null} | \
+// RUN:     wc -l | grep {\[02\]}
+
+extern void X(void);
+
+struct One   {};
+struct Two   {};
+struct Three {};
+struct Four  {};
+struct Five  {};
+struct Six   {};
+
+static void A(void) throw ()
+{
+  X();
+}
+
+static void B(void) throw (Two)
+{
+  try { A(); } catch (One) {}
+}
+
+static void C(void) throw (Six, Five)
+{
+  try { B(); } catch (Three) {} catch (Four) {}
+}
+
+int main ()
+{
+  try { C(); } catch (...) {}
+}