/* Check if different occurences of the reduction clause on OpenACC loop nests will compile. */ int foo (int N) { int a = 0, b = 0, c = 0, d = 0, e = 0; #pragma acc parallel { #pragma acc loop for (int i = 0; i < N; i++) { #pragma acc loop reduction(+:a) for (int j = 0; j < N; j++) a += 1; } } #pragma acc parallel { #pragma acc loop reduction(+:b) for (int i = 0; i < N; i++) { #pragma acc loop for (int j = 0; j < N; j++) b += 1; } } #pragma acc parallel { #pragma acc loop reduction(+:c) for (int i = 0; i < N; i++) { #pragma acc loop reduction(+:c) for (int j = 0; j < N; j++) c += 1; } } #pragma acc parallel loop for (int i = 0; i < N; i++) { #pragma acc loop reduction(+:d) for (int j = 0; j < N; j++) d += 1; } #pragma acc parallel loop reduction(+:e) for (int i = 0; i < N; i++) { #pragma acc loop reduction(+:e) for (int j = 0; j < N; j++) e += 1; } return a + b + c + d + e; }