diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.eh/fntry1.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.eh/fntry1.C | 32 |
1 files changed, 32 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 000000000..9b14f0111 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.eh/fntry1.C @@ -0,0 +1,32 @@ +// { dg-do run } +// 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; +} |