1 #include <stdlib.h>
2 #include <omp.h>
3
4 struct S
5 {
6 static int s;
7 int v;
8 S ()
9 {
10 #pragma omp atomic
11 s++;
12 }
13
14 S (int x)
15 {
16 #pragma omp atomic
17 s++;
18 v = x;
19 }
20
21 ~S ()
22 {
23 #pragma omp atomic
24 s--;
25 }
26
27 S (const S &x)
28 {
29 #pragma omp atomic
30 s++;
31 v = x.v;
32 }
33
34 static void
35 verify ()
36 {
37 if (s) abort ();
38 }
39
40 void
41 bump ()
42 {
43 v++;
44 }
45 };
46
47 int S::s = 0;