OSDN Git Service

gcc/ChangeLog:
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.mike / p9706.C
1 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
2 // { dg-options "-fexceptions" }
3 // prms-id: 9706
4
5 #include <stdlib.h>
6
7 int count, acount;
8
9 void *operator new(size_t sz) { ++count; return malloc (sz); }
10 void operator delete(void *p) throw() { --count; free (p); }
11
12 class A {
13 public:
14   A() { ++acount; }
15   A(const A&) { ++acount; }
16   ~A() { --acount; }
17 };
18
19 int main() {
20   int i;
21
22   // The standard library may have called new and/or delete during
23   // startup, so we have to reset the counter here.
24   count = 0;
25
26   for( i = 0; i < 10; i++ ) {
27     try {
28       throw A();
29     }
30     catch (A& a) {
31     }
32   }
33   if (acount)
34     return 1;
35   if (count)
36     return 2;
37 }