| // { dg-do compile { target c++11 } } |
| |
| void |
| foo () |
| { |
| int a[10] = {}; |
| #pragma omp parallel sections |
| { |
| #pragma omp section |
| a[0]++; |
| [[omp::directive (section)]] { |
| a[1]++; |
| } [[omp::directive (section)]] |
| a[2]++; |
| #pragma omp section |
| { a[3]++; } |
| } |
| [[omp::directive (parallel sections)]] |
| { |
| #pragma omp section |
| a[0]++; |
| [[omp::directive (section)]] { |
| a[1]++; |
| } [[omp::directive (section)]] |
| a[2]++; |
| #pragma omp section |
| { a[3]++; } |
| } |
| #pragma omp parallel sections |
| { |
| #pragma omp section |
| a[0]++; |
| a[4]++; |
| l1: a[5]++; |
| if (a[5] == 42) goto l1; |
| [[omp::directive (section)]] { |
| a[1]++; |
| a[6]++; |
| } [[omp::directive (section)]] |
| a[2]++; |
| a[7]++; |
| #pragma omp section |
| { a[3]++; } |
| a[8]++; |
| } |
| [[omp::directive (parallel sections)]] |
| { |
| #pragma omp section |
| a[0]++; |
| a[4]++; |
| [[omp::directive (section)]] { |
| a[1]++; |
| a[5]++; |
| } [[omp::directive (section)]] |
| a[2]++; |
| l2: a[6]++; |
| if (a[6] == 42) |
| goto l2; |
| a[7]++; |
| #pragma omp section |
| a[8]++; |
| { a[3]++; } |
| } |
| } |
| |
| int |
| bar (int a, int *c, int *d, int *e, int *f) |
| { |
| int i; |
| #pragma omp simd reduction (inscan, +: a) |
| for (i = 0; i < 64; i++) |
| { |
| d[i] = a; |
| [[omp::directive (scan, exclusive (a))]] |
| a += c[i]; |
| } |
| [[omp::directive (simd reduction (inscan, +: a))]] |
| for (i = 0; i < 64; i++) |
| { |
| a += c[i]; |
| #pragma omp scan inclusive (a) |
| d[i] = a; |
| } |
| #pragma omp simd reduction (inscan, +: a) |
| for (i = 0; i < 64; i++) |
| { |
| int t = a; |
| d[i] = t; |
| [[omp::directive (scan, exclusive (a))]] |
| int u = c[i]; |
| a += u; |
| } |
| [[omp::directive (simd reduction (inscan, +: a))]] |
| for (i = 0; i < 64; i++) |
| { |
| int t = c[i]; |
| a += t; |
| #pragma omp scan inclusive (a) |
| int u = a; |
| d[i] = u; |
| } |
| return a; |
| } |