OSDN Git Service

* ChangeLog: Wix wrong PR number in my previous commit.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / eh / ehopt1.C
1 // ehopt was only copying one statement from the cleanup of the B temporary
2 // into the following try block, so we lost its destructor call.
3
4 // { dg-do run }
5
6 template <class T, class U>
7 class A;
8
9 bool b;
10 int count;
11
12 template <>
13 class A<int, int>
14 {
15 public:
16   A(int) { ++count; if (b) throw 1; }
17   A(const A&) { ++count; if (b) throw 1; }
18   ~A() { --count; if (b) throw 1; }
19 };
20
21 typedef A<int, int> B;
22
23 template <>
24 class A<void *, void *>
25 {
26 public:
27   A() { if (b) throw 1; }
28   A(const B&) { if (b) throw 1; }
29   ~A() { if (b) throw 1; }
30 };
31
32 typedef A<void *, void *> C;
33
34 void f() { if (b) throw 1; }
35
36 int
37 main (void)
38 {
39   {
40     C a(1);
41     f();
42   }
43   return count;
44 }