diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/eh/dtor1.C')
-rw-r--r-- | gcc/testsuite/g++.dg/eh/dtor1.C | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/eh/dtor1.C b/gcc/testsuite/g++.dg/eh/dtor1.C new file mode 100644 index 000000000..4fafdde24 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/dtor1.C @@ -0,0 +1,35 @@ +// PR c++/411 + +// Test that a fully-constructed base is destroyed before transferring +// control to the handler of a function-try-block. + +// { dg-do run } + +int ad; +int r; + +struct A { + ~A() { ++ad; } +}; + +struct B: public A { + ~B(); +}; + +B::~B () +try + { + throw 1; + } +catch (...) + { + if (!ad) + r = 1; + return; + } + +int main () +{ + { B b; } + return r; +} |