Fix broken MinGW build of gcc.c
[official-gcc.git] / gcc / testsuite / g++.old-deja / g++.other / init19.C
blob15c160dad90335b2c2b1265cca585c7d5756ef19
1 // { dg-do run { xfail { { ! cxa_atexit } && { ! *-*-solaris2* } } } }
2 // { dg-require-effective-target cxa_atexit }
3 #include <stdlib.h>
5 #define assert(x) do { if (! (x)) abort(); } while (0)
7 int count = 0;
9 class A
11 public:
12         explicit A(int i);
13         ~A();
15         int i;
17         A(const A&);
18         A& operator=(const A&);
21 A::A(int i_)
22         : i(i_)
26 A::~A()
28         assert(++count == i);
29         i = -1;
32 extern "C" {
34 void one()
36         static bool second_time;
37         if (second_time)
38                 assert(++count == 9);
39         else
40         {
41                 assert(++count == 1);
42                 second_time = true;
43         }
44         static A a(10);
45         assert(a.i == 10);
48 void two()
50         assert(++count == 7);
51         static A a(8);
52         assert(a.i == 8);
55 void three()
57         assert(++count == 2);
58         static A a(6);
59         assert(a.i == 6);
62 void five()
64         assert(++count == 4);
65         static A a(5);
66         assert(a.i == 5);
69 void four()
71         assert(++count == 3);
72         atexit(five);
77 A zero(11);
79 int main()
81         one();
82         atexit(one);
83         atexit(two);
84         three();
85         atexit(four);