blob: a58b8fd33b1efb3e4a0229ebf7210200f3c47db5 [file] [log] [blame]
! { dg-additional-options "-fdump-tree-original" }
subroutine foo
implicit none
integer :: i, a(5)
!$omp do
do i = 1, 5
end do
!$omp end do nowait
!$omp do simd
do i = 1, 5
end do
!$omp end do simd nowait
!$omp scope
!$omp end scope nowait
!$omp sections
!$omp section
block; end block
!$omp end sections nowait
!$omp single
!$omp end single nowait
!$omp target
!$omp end target nowait
!$omp target parallel
!$omp end target parallel nowait
!$omp target parallel do
do i = 1, 5
end do
!$omp end target parallel do nowait
!$omp target parallel do simd
do i = 1, 5
end do
!$omp end target parallel do simd nowait
!$omp target parallel loop
do i = 1, 5
end do
!$omp end target parallel loop nowait
!$omp target teams distribute parallel do
do i = 1, 5
end do
!$omp end target teams distribute parallel do nowait
!$omp target teams distribute parallel do simd
do i = 1, 5
end do
!$omp end target teams distribute parallel do simd nowait
!$omp target simd
do i = 1, 5
end do
!$omp end target simd nowait
!$omp target teams
!$omp end target teams nowait
!$omp target teams distribute
do i = 1, 5
end do
!$omp end target teams distribute nowait
!$omp target teams distribute simd
do i = 1, 5
end do
!$omp end target teams distribute simd nowait
!$omp target teams loop
do i = 1, 5
end do
!$omp end target teams loop nowait
!$omp workshare
A(:) = 5
!$omp end workshare nowait
end
! Note: internally, for '... parallel do ...', 'nowait' is always added
! such that for 'omp end target parallel do nowait', 'nowait' is on both
! 'target' as specified in the OpenMP spec and and on 'do' due to internal usage.
! Expected with 'nowait'
! { dg-final { scan-tree-dump-times "#pragma omp for nowait" 6 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp for schedule\\(static\\) nowait" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp sections nowait" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp single nowait" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target nowait" 12 "original" } }
! Never:
! { dg-final { scan-tree-dump-not "#pragma omp distribute\[^\n\r]*nowait" "original" } }
! { dg-final { scan-tree-dump-not "#pragma omp loop\[^\n\r]*nowait" "original" } }
! { dg-final { scan-tree-dump-not "#pragma omp parallel\[^\n\r]*nowait" "original" } }
! { dg-final { scan-tree-dump-not "#pragma omp section\[^s\]\[^\n\r]*nowait" "original" } }
! { dg-final { scan-tree-dump-not "#pragma omp simd\[^\n\r]*nowait" "original" } }
! { dg-final { scan-tree-dump-not "#pragma omp teams\[^\n\r]*nowait" "original" } }
! Sometimes or never with nowait:
! { dg-final { scan-tree-dump-times "#pragma omp distribute\[\n\r]" 4 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp loop\[\n\r]" 2 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp parallel\[\n\r]" 6 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp section\[\n\r]" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\)\[\n\r]" 5 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp teams\[\n\r]" 6 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target\[\n\r]" 0 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp for\[\n\r]" 0 "original" } }