OSDN Git Service

PR libstdc++/37907
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.oliva / delete3.C
1 // { dg-do run  }
2 // Copyright (C) 1999 Free Software Foundation
3
4 // by Alexandre Oliva <oliva@lsd.ic.unicamp.br>
5
6 // Test whether dtors of vbases are called on throw within new[].
7 // Variant of delete2.C.
8
9 extern "C" void abort();
10 extern "C" void exit(int);
11
12 struct Foo {
13   static bool first;
14
15   Foo() {
16     if (first)
17       first = false;
18     else
19       throw first;
20   }
21
22   ~Foo() {
23     exit(0);
24   }
25 };
26
27 bool Foo::first = true;
28
29 struct Bar : virtual Foo {
30 };
31
32 int main() {
33   try {
34     delete [] new Bar[2];
35   } catch (...) {
36   }
37   abort();
38 }