1/* { dg-do compile } */
2
3int x;
4volatile int y;
5volatile unsigned char z;
6
7void f1(void)
8{
9  #pragma omp atomic
10    x++;
11  #pragma omp atomic
12    x--;
13  #pragma omp atomic
14    ++x;
15  #pragma omp atomic
16    --x;
17  #pragma omp atomic
18    x += 1;
19  #pragma omp atomic
20    x -= y;
21  #pragma omp atomic
22    x |= 1;
23  #pragma omp atomic
24    x &= 1;
25  #pragma omp atomic
26    x ^= 1;
27  #pragma omp atomic
28    x *= 3;
29  #pragma omp atomic
30    x /= 3;
31  #pragma omp atomic
32    x /= 3;
33  #pragma omp atomic
34    x <<= 3;
35  #pragma omp atomic
36    x >>= 3;
37}
38
39void f2(void)
40{
41  #pragma omp atomic
42    y++;
43  #pragma omp atomic
44    y--;
45  #pragma omp atomic
46    ++y;
47  #pragma omp atomic
48    --y;
49  #pragma omp atomic
50    y += 1;
51  #pragma omp atomic
52    y -= x;
53  #pragma omp atomic
54    y |= 1;
55  #pragma omp atomic
56    y &= 1;
57  #pragma omp atomic
58    y ^= 1;
59  #pragma omp atomic
60    y *= 3;
61  #pragma omp atomic
62    y /= 3;
63  #pragma omp atomic
64    y /= 3;
65  #pragma omp atomic
66    y <<= 3;
67  #pragma omp atomic
68    y >>= 3;
69}
70
71void f3(void)
72{
73  #pragma omp atomic
74    z++;
75  #pragma omp atomic
76    z--;
77  #pragma omp atomic
78    ++z;
79  #pragma omp atomic
80    --z;
81  #pragma omp atomic
82    z += 1;
83  #pragma omp atomic
84    z |= 1;
85  #pragma omp atomic
86    z &= 1;
87  #pragma omp atomic
88    z ^= 1;
89  #pragma omp atomic
90    z *= 3;
91  #pragma omp atomic
92    z /= 3;
93  #pragma omp atomic
94    z /= 3;
95  #pragma omp atomic
96    z <<= 3;
97  #pragma omp atomic
98    z >>= 3;
99}
100