! { dg-do compile } ! { dg-additional-options "-fdump-tree-omplower" } module combined_if implicit none integer, parameter :: N = 100 integer, parameter :: LIMIT = 60 integer :: i, j integer, dimension(N) :: a = (/ (i, i = 1,N) /) contains subroutine test_parallel_loop_simd do j = 1, N !$omp parallel do simd if(j .lt. LIMIT) do i = 1, N a(i) = a(i) + 1 end do end do end subroutine subroutine test_target_parallel do j = 1, N !$omp target parallel if(j .lt. LIMIT) map(tofrom: a(1:N)) do i = 1, N a(i) = a(i) + 1 end do !$omp end target parallel end do end subroutine subroutine test_target_parallel_loop do j = 1, N !$omp target parallel do if(j .lt. LIMIT) map(tofrom: a(1:N)) do i = 1, N a(i) = a(i) + 1 end do end do end subroutine subroutine test_target_parallel_loop_simd do j = 1, N !$omp target parallel do simd if(j .lt. LIMIT) map(tofrom: a(1:N)) do i = 1, N a(i) = a(i) + 1 end do end do end subroutine subroutine test_target_simd do j = 1, N !$omp target simd if(j .lt. LIMIT) map(tofrom: a(1:N)) do i = 1, N a(i) = a(i) + 1 end do end do end subroutine subroutine test_target_teams do j = 1, N !$omp target teams if(j .lt. LIMIT) map(tofrom: a(1:N)) do i = 1, N a(i) = a(i) + 1 end do !$omp end target teams end do end subroutine subroutine test_target_teams_distribute do j = 1, N !$omp target teams distribute if(j .lt. LIMIT) map(tofrom: a(1:N)) do i = 1, N a(i) = a(i) + 1 end do end do end subroutine subroutine test_target_teams_distibute_simd do j = 1, N !$omp target teams distribute simd if(j .lt. LIMIT) map(tofrom: a(1:N)) do i = 1, N a(i) = a(i) + 1 end do end do end subroutine subroutine test_target_teams_distribute_parallel_loop do j = 1, N !$omp target teams distribute parallel do if(j .lt. LIMIT) map(tofrom: a(1:N)) do i = 1, N a(i) = a(i) + 1 end do end do end subroutine subroutine test_target_teams_distribute_parallel_loop_simd do j = 1, N !$omp target teams distribute parallel do simd if(j .lt. LIMIT) map(tofrom: a(1:N)) do i = 1, N a(i) = a(i) + 1 end do end do end subroutine end module ! { dg-final { scan-tree-dump-times "(?n)#pragma omp target.* if\\(" 9 "omplower" } } ! { dg-final { scan-tree-dump-times "(?n)#pragma omp simd.* if\\(" 5 "omplower" { target { ! offload_nvptx } } } } ! { dg-final { scan-tree-dump-times "(?n)#pragma omp simd.* if\\(" 9 "omplower" { target { offload_nvptx } } } } ! { dg-final { scan-tree-dump-times "(?n)#pragma omp parallel.* if\\(" 6 "omplower" } }