Small ChangeLog tweak.
[official-gcc.git] / gcc / testsuite / g++.old-deja / g++.robertl / eh990323-5.C
blob7913c09ae63adca2ccb0124259323ffddd1b258d
1 // { dg-do run  }
2 // check cleanup of partial array objects
3 extern "C" void abort (void);
4 extern "C" void exit (int);
6 int ctor = 0;
7 int dtor = 0;
9 int cnt = 1;
11 struct A {
12         int x;
13         A();
14         A(const A&);
15         ~A();
18 A::A()
20         if (cnt == 10)
21                 throw 57;
22         x = cnt++;
23         ctor++;
26 A::A(const A&)
28         if (cnt == 10)
29                 throw 57;
30         x = cnt++;
31         ctor++;
34 A::~A()
36         if (x + 1 != cnt--)
37                 abort();
38         dtor++;
41 void f()
43         A a[] = {A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A()};
45         throw -1066;
48 int
49 main()
51         int flag;
53         flag = 0;
54         try {
55                 f();
56         }
57         catch (int) {
58                 flag = 1;
59         }
60         if (!flag)
61                 abort();
62         if (ctor != 9)
63                 abort();
64         if (dtor != 9)
65                 abort();
67         exit(0);