| module m |
| implicit none |
| integer v |
| interface |
| subroutine foo(x) |
| integer, value :: x |
| end |
| end interface |
| contains |
| |
| subroutine bar |
| integer i |
| !$omp do reduction (task, +: v) |
| do i = 0, 63 |
| call foo (i) |
| end do |
| !$omp sections reduction (task, +: v) |
| call foo (-2) |
| !$omp section |
| call foo (-3) |
| !$omp end sections |
| !$omp parallel reduction (task, +: v) |
| call foo (-1) |
| !$omp end parallel |
| !$omp parallel do reduction (task, +: v) |
| do i = 0, 63 |
| call foo (i) |
| end do |
| !$omp end parallel do |
| !$omp parallel sections reduction (task, +: v) |
| call foo (-2) |
| !$omp section |
| call foo (-3) |
| !$omp end parallel sections |
| !$omp teams distribute parallel do reduction (task, +: v) ! { dg-bogus "invalid 'task' reduction modifier on construct other than 'parallel', 'do', 'sections' or 'scope'" "PR101948" { xfail *-*-* } } |
| do i = 0, 63 |
| call foo (i) |
| end do |
| !$omp end teams distribute parallel do |
| !$omp do reduction (default, +: v) |
| do i = 0, 63 |
| call foo (i) |
| end do |
| !$omp sections reduction (default, +: v) |
| call foo (-2) |
| !$omp section |
| call foo (-3) |
| !$omp end sections |
| !$omp parallel reduction (default, +: v) |
| call foo (-1) |
| !$omp end parallel |
| !$omp parallel do reduction (default, +: v) |
| do i = 0, 63 |
| call foo (i) |
| end do |
| !$omp end parallel do |
| !$omp parallel sections reduction (default, +: v) |
| call foo (-2) |
| !$omp section |
| call foo (-3) |
| !$omp end parallel sections |
| !$omp teams distribute parallel do reduction (default, +: v) |
| do i = 0, 63 |
| call foo (i) |
| end do |
| !$omp end teams distribute parallel do |
| !$omp do reduction (default, +: v) |
| do i = 0, 63 |
| call foo (i) |
| end do |
| !$omp end do nowait |
| !$omp sections reduction (default, +: v) |
| call foo (-2) |
| !$omp section |
| call foo (-3) |
| !$omp end sections nowait |
| !$omp simd reduction (default, +: v) |
| do i = 0, 63 |
| v = v + 1 |
| end do |
| !$omp do simd reduction (default, +: v) |
| do i = 0, 63 |
| v = v + 1 |
| end do |
| !$omp parallel do simd reduction (default, +: v) |
| do i = 0, 63 |
| v = v + 1 |
| end do |
| !$omp end parallel do simd |
| !$omp teams distribute parallel do simd reduction (default, +: v) |
| do i = 0, 63 |
| v = v + 1 |
| end do |
| !$omp end teams distribute parallel do simd |
| !$omp taskloop reduction (default, +: v) |
| do i = 0, 63 |
| call foo (i) |
| end do |
| !$omp taskloop simd reduction (default, +: v) |
| do i = 0, 63 |
| v = v + 1 |
| end do |
| !$omp teams reduction (default, +: v) |
| call foo (i) |
| !$omp end teams |
| !$omp teams distribute reduction (default, +: v) |
| do i = 0, 63 |
| call foo (i) |
| end do |
| !$omp end teams distribute |
| end |
| end |