| ! { dg-additional-options "-fdump-tree-original" } |
| subroutine foo (p) |
| logical :: p(:) |
| integer i |
| integer a, b, c, d, e, f, g, h |
| a = -1; b = -1; c = -1; d = -1; e = -1; f = -1; g = -1; h = -1 |
| !$omp parallel |
| !$omp do lastprivate (conditional: a) |
| do i = 1, 32 |
| if (p(i)) & |
| a = i |
| end do |
| !$omp end parallel |
| !$omp simd lastprivate (conditional: b) |
| do i = 1, 32 |
| if (p(i)) & |
| b = i |
| end do |
| !$omp parallel |
| !$omp do simd lastprivate (conditional: c) |
| do i = 1, 32 |
| if (p(i)) & |
| c = i |
| end do |
| !$omp end parallel |
| !$omp parallel do lastprivate (conditional: d) |
| do i = 1, 32 |
| if (p(i)) & |
| d = i |
| end do |
| !$omp end parallel do |
| !$omp parallel do simd lastprivate (conditional: e) |
| do i = 1, 32 |
| if (p(i)) & |
| e = i |
| end do |
| !$omp end parallel do simd |
| end subroutine |
| |
| ! { dg-final { scan-tree-dump-times "#pragma omp for lastprivate\\(conditional:a\\)" 1 "original" } } |
| ! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) lastprivate\\(conditional:b\\)" 1 "original" } } |
| ! { dg-final { scan-tree-dump-times "#pragma omp for lastprivate\\(conditional:c\\)" 1 "original" } } |
| ! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) lastprivate\\(conditional:c\\)" 1 "original" } } |
| ! { dg-final { scan-tree-dump-times "#pragma omp parallel lastprivate\\(conditional:d\\)" 1 "original" } } |
| ! { dg-final { scan-tree-dump-times "#pragma omp parallel lastprivate\\(conditional:e\\)" 1 "original" } } |
| ! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) lastprivate\\(conditional:e\\)" 1 "original" } } |