aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>1999-08-19 14:45:07 -0400
committerJason Merrill <jason@gcc.gnu.org>1999-08-19 14:45:07 -0400
commit852be00c009c96d573dacad6007a63f8076a6c9c (patch)
tree9528af3446ddca5829e3b181692aaa5567ec6ba8
parentb736d716880faae719a305a16ef773b4fda9df10 (diff)
downloadgcc-852be00c009c96d573dacad6007a63f8076a6c9c.zip
gcc-852be00c009c96d573dacad6007a63f8076a6c9c.tar.gz
gcc-852be00c009c96d573dacad6007a63f8076a6c9c.tar.bz2
new
From-SVN: r28764
-rw-r--r--gcc/testsuite/g++.old-deja/g++.eh/fntry1.C31
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.eh/fntry1.C b/gcc/testsuite/g++.old-deja/g++.eh/fntry1.C
new file mode 100644
index 0000000..9c1c0ff
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.eh/fntry1.C
@@ -0,0 +1,31 @@
+// Bug: g++ fails to treat function-try-blocks in ctors specially.
+// Submitted by Jason Merrill <jason@cygnus.com>
+
+int c;
+int r;
+
+struct A {
+ int i;
+ A(int j) { i = j; }
+ ~A() { c += i; }
+};
+
+struct B: public A {
+ A a;
+ B() try : A(1), a(2)
+ { throw 1; }
+ catch (...)
+ { if (c != 3) r |= 1; }
+};
+
+int main ()
+{
+ try
+ { B b; }
+ catch (...)
+ { c = 0; }
+
+ if (c != 0) r |= 2;
+
+ return r;
+}