Small ChangeLog tweak.
[official-gcc.git] / gcc / testsuite / gcc.dg / gomp / _Atomic-3.c
blob31dd1cb1122cadabd8bc825f5444e7567b7a5a5e
1 /* PR c/65467 */
2 /* { dg-do compile } */
3 /* { dg-additional-options "-std=c11" } */
5 void
6 f1 (void)
8 _Atomic int i = 0, k[4];
9 int j = 0;
10 k[0] = 0;
11 k[1] = 0;
12 k[2] = 0;
13 k[3] = 0;
14 #pragma omp parallel reduction (+:i) /* { dg-error "'_Atomic' 'i' in 'reduction' clause" } */
15 i++;
16 #pragma omp declare reduction (foo: _Atomic int: omp_out += omp_in) initializer (omp_priv = omp_orig * 0) /* { dg-error "'_Atomic' qualified type in '#pragma omp declare reduction'" } */
17 #pragma omp declare reduction (bar: int: omp_out += omp_in) initializer (omp_priv = omp_orig * 0)
18 #pragma omp parallel reduction (bar:j)
19 j++;
20 #pragma omp parallel reduction (bar:i) /* { dg-error "'_Atomic' 'i' in 'reduction' clause" } */
21 i++;
22 #pragma omp parallel reduction (+:k) /* { dg-error "'_Atomic' 'k' in 'reduction' clause" } */
23 k[1]++;
24 #pragma omp parallel reduction (+:k[1:2]) /* { dg-error "'_Atomic' \[^\n\r]* in 'reduction' clause" } */
25 k[1]++;
28 void
29 f2 (int *_Atomic p)
31 #pragma omp simd aligned (p : 16) /* { dg-error "'_Atomic' 'p' in 'aligned' clause" } */
32 for (int i = 0; i < 16; i++)
33 p[i]++;
36 _Atomic int x;
38 void
39 f3 (_Atomic int *p)
41 int i;
42 #pragma omp atomic write
43 x = 6; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
44 #pragma omp atomic read
45 i = x; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
46 #pragma omp atomic update
47 x += 6; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
48 #pragma omp atomic capture
49 i = x *= 2; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
50 #pragma omp atomic write
51 p[2] = 6; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
52 #pragma omp atomic read
53 i = p[2]; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
54 #pragma omp atomic update
55 p[2] += 6; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
56 #pragma omp atomic capture
57 i = p[2] *= 2; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
60 #pragma omp declare simd linear(x:1) /* { dg-error "'_Atomic' 'x' in 'linear' clause" } */
61 int
62 f4 (_Atomic int x, int y)
64 return x + y;