| /* PR c/65467 */ |
| /* { dg-do compile } */ |
| /* { dg-additional-options "-std=c11" } */ |
| |
| _Atomic int t; |
| #pragma omp threadprivate (t) |
| |
| void |
| foo (void) |
| { |
| _Atomic int a = 4, b = 0, c, d = 3, e; |
| a++; |
| #pragma omp parallel sections num_threads (a) shared (b) private (c) firstprivate (d) lastprivate (e) |
| { |
| #pragma omp section |
| { |
| a++; |
| b++; |
| c = 5; |
| c++; |
| d++; |
| e = 9; |
| e++; |
| } |
| #pragma omp section |
| { |
| a++; |
| b++; |
| c = 5; |
| c++; |
| d++; |
| e = 3; |
| e++; |
| } |
| } |
| e++; |
| t++; |
| #pragma omp parallel copyin (t) private (e) |
| { |
| t++; |
| e = t; |
| #pragma omp single copyprivate (e) |
| { |
| e++; |
| } |
| e++; |
| } |
| } |
| |
| void |
| bar (void) |
| { |
| int a[4]; |
| _Atomic int b = 1, c = 2, f = 8, g = 8, h = 0; |
| _Atomic int d, e[3]; |
| int *_Atomic p; |
| _Atomic int *_Atomic q; |
| int i, j; |
| p = a; |
| q = e; |
| #pragma omp target teams map (tofrom: a[b:c]) num_teams (b) thread_limit (c) |
| a[1]++; |
| #pragma omp target device(h) |
| ; |
| #pragma omp task depend (inout: a[b:c]) |
| ; |
| #pragma omp task depend (out: d, e[b:c]) priority (b) |
| ; |
| #pragma omp task depend (out: p[b:c]) |
| ; |
| #pragma omp task depend (out: q[b:c]) |
| ; |
| #pragma omp taskloop num_tasks (c) |
| for (i = 0; i < 16; i++) |
| ; |
| #pragma omp taskloop grainsize (c) |
| for (i = 0; i < 16; i++) |
| ; |
| #pragma omp parallel for schedule (dynamic, b) |
| for (i = 0; i < 16; i++) |
| ; |
| j = 0; |
| #pragma omp simd linear(j:b) |
| for (i = 0; i < 16; i++) |
| j += b; |
| j = 4; |
| #pragma omp atomic read |
| b = j; |
| #pragma omp atomic write |
| j = c; |
| #pragma omp atomic |
| j += c; |
| #pragma omp atomic capture |
| b = j += c; |
| #pragma omp atomic capture |
| b = ++j; |
| #pragma omp atomic capture |
| { b = j; j = c; } |
| #pragma omp atomic capture |
| { b = j; j++; } |
| #pragma omp atomic capture |
| { j *= c; b = j; } |
| } |