PR testsuite/85483: Move aarch64/sve/vcond_1.c test to g++.dg/other/
[official-gcc.git] / libgomp / testsuite / libgomp.c / pr69389.c
blob07faff46f403c32039e995c1d299bfdacb1134e5
1 /* PR c/69389 */
3 struct S { unsigned int a : 10; unsigned int b : 4; unsigned int c : 18; } s = { 210, 11, 1235 };
5 unsigned int
6 f1 (void)
8 unsigned int v;
9 #pragma omp atomic read
10 v = s.b;
11 return v;
14 void
15 f2 (unsigned int v)
17 #pragma omp atomic write
18 s.b = v;
21 void
22 f3 (void)
24 #pragma omp atomic
25 s.b |= 1;
28 int
29 f4 (void)
31 int v;
32 #pragma omp atomic capture
33 v = s.b += 8;
34 return v;
37 int
38 f5 (void)
40 int v;
41 #pragma omp atomic capture
43 v = s.b;
44 s.b -= 4;
46 return v;
49 void
50 f6 (void)
52 #pragma omp atomic
53 s.b = s.b & 7;
56 void
57 f7 (void)
59 #pragma omp atomic
60 s.b = ~7 & s.b;
63 int
64 f8 (void)
66 int v;
67 #pragma omp atomic capture
68 v = s.b = 8 + s.b;
69 return v;
72 int
73 f9 (void)
75 int v;
76 #pragma omp atomic capture
78 v = s.b;
79 s.b = s.b - 4;
81 return v;
84 int
85 main ()
87 if (f1 () != 11)
88 __builtin_abort ();
89 f2 (4);
90 if (s.a != 210 || s.b != 4 || s.c != 1235)
91 __builtin_abort ();
92 s.a = 813;
93 s.c = 31532;
94 if (f1 () != 4)
95 __builtin_abort ();
96 f3 ();
97 if (f1 () != 5)
98 __builtin_abort ();
99 if (s.a != 813 || s.b != 5 || s.c != 31532)
100 __builtin_abort ();
101 if (f4 () != 13)
102 __builtin_abort ();
103 if (f1 () != 13)
104 __builtin_abort ();
105 f2 (14);
106 if (s.a != 813 || s.b != 14 || s.c != 31532)
107 __builtin_abort ();
108 if (f5 () != 14)
109 __builtin_abort ();
110 if (f1 () != 10 || s.a != 813 || s.b != 10 || s.c != 31532)
111 __builtin_abort ();
112 f6 ();
113 if (f1 () != 2)
114 __builtin_abort ();
115 f2 (15);
116 f7 ();
117 if (f1 () != 8)
118 __builtin_abort ();
119 if (f8 () != 0 || s.a != 813 || s.b != 0 || s.c != 31532)
120 __builtin_abort ();
121 if (f9 () != 0 || s.a != 813 || s.b != 12 || s.c != 31532)
122 __builtin_abort ();
123 return 0;