blob: 31dd1cb1122cadabd8bc825f5444e7567b7a5a5e [file] [log] [blame]
/* PR c/65467 */
/* { dg-do compile } */
/* { dg-additional-options "-std=c11" } */
void
f1 (void)
{
_Atomic int i = 0, k[4];
int j = 0;
k[0] = 0;
k[1] = 0;
k[2] = 0;
k[3] = 0;
#pragma omp parallel reduction (+:i) /* { dg-error "'_Atomic' 'i' in 'reduction' clause" } */
i++;
#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'" } */
#pragma omp declare reduction (bar: int: omp_out += omp_in) initializer (omp_priv = omp_orig * 0)
#pragma omp parallel reduction (bar:j)
j++;
#pragma omp parallel reduction (bar:i) /* { dg-error "'_Atomic' 'i' in 'reduction' clause" } */
i++;
#pragma omp parallel reduction (+:k) /* { dg-error "'_Atomic' 'k' in 'reduction' clause" } */
k[1]++;
#pragma omp parallel reduction (+:k[1:2]) /* { dg-error "'_Atomic' \[^\n\r]* in 'reduction' clause" } */
k[1]++;
}
void
f2 (int *_Atomic p)
{
#pragma omp simd aligned (p : 16) /* { dg-error "'_Atomic' 'p' in 'aligned' clause" } */
for (int i = 0; i < 16; i++)
p[i]++;
}
_Atomic int x;
void
f3 (_Atomic int *p)
{
int i;
#pragma omp atomic write
x = 6; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
#pragma omp atomic read
i = x; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
#pragma omp atomic update
x += 6; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
#pragma omp atomic capture
i = x *= 2; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
#pragma omp atomic write
p[2] = 6; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
#pragma omp atomic read
i = p[2]; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
#pragma omp atomic update
p[2] += 6; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
#pragma omp atomic capture
i = p[2] *= 2; /* { dg-error "'_Atomic' expression in '#pragma omp atomic'" } */
}
#pragma omp declare simd linear(x:1) /* { dg-error "'_Atomic' 'x' in 'linear' clause" } */
int
f4 (_Atomic int x, int y)
{
return x + y;
}