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