/* { dg-additional-options "-fopt-info-note-omp" } { dg-additional-options "--param=openacc-privatization=noisy" } { dg-additional-options "-foffload=-fopt-info-note-omp" } { dg-additional-options "-foffload=--param=openacc-privatization=noisy" } for testing/documenting aspects of that functionality. */ #include #include #define M 8 #define N 32 #pragma acc routine vector void vector (int *a) { int i; #pragma acc loop vector /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ for (i = 0; i < N; i++) a[i] -= a[i]; } #pragma acc routine worker void worker (int *b) { int i, j; #pragma acc loop worker /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ for (i = 0; i < N; i++) { #pragma acc loop vector /* { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ for (j = 0; j < M; j++) b[i * M + j] += b[i * M + j]; } } #pragma acc routine gang void gang (int *a) { int i; #pragma acc loop gang worker vector /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ for (i = 0; i < N; i++) a[i] -= i; } #pragma acc routine seq void seq (int *a) { int i; for (i = 0; i < N; i++) a[i] += 1; } int main(int argc, char **argv) { int i; int a[N]; int b[M * N]; i = 0; for (i = 0; i < N; i++) a[i] = 0; #pragma acc parallel copy (a[0:N]) { #pragma acc loop seq /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ for (i = 0; i < N; i++) seq (&a[0]); } for (i = 0; i < N; i++) { if (a[i] != N) abort (); } #pragma acc parallel copy (a[0:N]) { #pragma acc loop seq /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ for (i = 0; i < N; i++) gang (&a[0]); } for (i = 0; i < N; i++) { if (a[i] != N + (N * (-1 * i))) abort (); } for (i = 0; i < N; i++) a[i] = i; #pragma acc parallel copy (b[0:M*N]) { worker (&b[0]); } for (i = 0; i < N; i++) { if (a[i] != i) abort (); } for (i = 0; i < N; i++) a[i] = i; #pragma acc parallel copy (a[0:N]) { #pragma acc loop /* { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-1 } */ for (i = 0; i < N; i++) vector (&a[0]); } for (i = 0; i < N; i++) { if (a[i] != 0) abort (); } return 0; }