| int s1, s2, s3, s4, s5, s6, s7, s8; |
| #pragma omp declare target (s1, s2, s3, s4, s5, s6, s7, s8) |
| |
| void |
| f1 (void) |
| { |
| int i; |
| #pragma omp distribute |
| for (i = 0; i < 64; i++) |
| ; |
| #pragma omp distribute private (i) |
| for (i = 0; i < 64; i++) |
| ; |
| #pragma omp distribute |
| for (int j = 0; j < 64; j++) |
| ; |
| #pragma omp distribute lastprivate (s1) |
| for (s1 = 0; s1 < 64; s1 += 2) |
| ; |
| #pragma omp distribute lastprivate (s2) |
| for (i = 0; i < 64; i++) |
| s2 = 2 * i; |
| #pragma omp distribute simd |
| for (i = 0; i < 64; i++) |
| ; |
| #pragma omp distribute simd lastprivate (s3, s4) collapse(2) |
| for (s3 = 0; s3 < 64; s3++) |
| for (s4 = 0; s4 < 3; s4++) |
| ; |
| #pragma omp distribute parallel for |
| for (i = 0; i < 64; i++) |
| ; |
| #pragma omp distribute parallel for private (i) |
| for (i = 0; i < 64; i++) |
| ; |
| #pragma omp distribute parallel for lastprivate (s5) |
| for (s5 = 0; s5 < 64; s5++) |
| ; |
| #pragma omp distribute firstprivate (s7) private (s8) |
| for (i = 0; i < 64; i++) |
| s8 = s7++; |
| } |
| |
| void |
| f2 (void) |
| { |
| int i; |
| #pragma omp distribute lastprivate (i) /* { dg-error "lastprivate variable .i. is private in outer context" } */ |
| for (i = 0; i < 64; i++) |
| ; |
| #pragma omp distribute firstprivate (s6) lastprivate (s6) /* { dg-error "same variable used in .firstprivate. and .lastprivate. clauses on .distribute. construct" } */ |
| for (i = 0; i < 64; i++) |
| s6 += i; |
| } |
| |
| #pragma omp declare target to(f1, f2) |