// Test that cleanups get run when a catch filter fails to match. // { dg-do run } extern "C" void exit(int); extern "C" void abort(); struct a { a(); ~a(); }; struct e1 {}; struct e2 {}; void ex_test () { a aa; try { throw e1 (); } catch (e2 &) { } } int main () { try { ex_test (); } catch (...) { } abort (); } a::a() { } a::~a() { exit (0); }