OSDN Git Service

Merge from gomp-3_1-branch branch:
[pf3gnuchains/gcc-fork.git] / libgomp / testsuite / libgomp.c / atomic-13.c
1 /* { dg-do run } */
2
3 extern void abort (void);
4 long long l, m;
5 int i, j;
6
7 void
8 foo (void)
9 {
10   #pragma omp atomic read
11     i = l;
12   #pragma omp atomic read
13     m = j;
14   if (i != 77 || m != 88)
15     abort ();
16   #pragma omp atomic write
17     l = 1 + i + 6 * 1;
18   #pragma omp atomic write
19     j = 170 - 170 + m + 1 * 7;
20   #pragma omp atomic capture
21     i = l += 4;
22   #pragma omp atomic capture
23     m = j += 4;
24   if (i != 88 || m != 99)
25     abort ();
26   #pragma omp atomic capture
27     {
28       i = l;
29       l += 4;
30     }
31   #pragma omp atomic capture
32     {
33       m = j;
34       j += 4;
35     }
36   if (i != 88 || m != 99)
37     abort ();
38   #pragma omp atomic capture
39     {
40       l += 4;
41       i = l;
42     }
43   #pragma omp atomic capture
44     {
45       j += 4;
46       m = j;
47     }
48   if (i != 96 || m != 107)
49     abort ();
50 }
51
52 int
53 main ()
54 {
55   l = 77;
56   j = 88;
57   foo ();
58   return 0;
59 }