New testcase. Unfortunately, native GCC gets this wrong. Someday we will have to...
authorChris Lattner <sabre@nondot.org>
Wed, 27 Aug 2003 18:19:53 +0000 (18:19 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 27 Aug 2003 18:19:53 +0000 (18:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8162 91177308-0d34-0410-b5e6-96231b3b80d8

test/C++Frontend/EH/copy_ctor_throw.cpp [new file with mode: 0644]

diff --git a/test/C++Frontend/EH/copy_ctor_throw.cpp b/test/C++Frontend/EH/copy_ctor_throw.cpp
new file mode 100644 (file)
index 0000000..1c50984
--- /dev/null
@@ -0,0 +1,25 @@
+/* Test for throwing an exception from the copy ctor of the exception object 
+ * invoked while building an exception.
+ */
+#include <stdio.h>
+
+struct foo {
+  foo() {}
+  foo(const foo &F) { throw 1; }
+};
+
+int main() {
+       try {
+               foo f;
+               throw f;
+       } catch (int i) {
+               printf("Success!\n");
+               return 0;
+       } catch (foo &f) {
+               printf("Failure: caught a foo!\n");
+               return 1;
+       } catch (...) {
+               printf("Failure: caught something else!\n");
+               return 1;
+       }
+}