1// Test that cleanups get run when a catch filter fails to match. 2// { dg-do run } 3 4extern "C" void exit(int); 5extern "C" void abort(); 6 7struct a 8{ 9 a(); 10 ~a(); 11}; 12 13struct e1 {}; 14struct e2 {}; 15 16void 17ex_test () 18{ 19 a aa; 20 try 21 { 22 throw e1 (); 23 } 24 catch (e2 &) 25 { 26 } 27} 28 29int 30main () 31{ 32 try 33 { 34 ex_test (); 35 } 36 catch (...) 37 { 38 } 39 abort (); 40} 41 42a::a() { } 43a::~a() { exit (0); } 44