! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s
subroutine test_unstructured1(a, b, c)
integer :: i, j, k
real :: a(:,:,:), b(:,:,:), c(:,:,:)
!$acc data copy(a, b, c)
!$acc kernels
a(:,:,:) = 0.0
!$acc end kernels
!$acc kernels
do i = 1, 10
do j = 1, 10
do k = 1, 10
end do
end do
end do
!$acc end kernels
do i = 1, 10
do j = 1, 10
do k = 1, 10
end do
end do
if (a(1,2,3) > 10) stop 'just to be unstructured'
end do
!$acc end data
end subroutine
! CHECK-LABEL: func.func @_QPtest_unstructured1
! CHECK: acc.data
! CHECK: acc.kernels
! CHECK: acc.kernels
! CHECK: fir.call @_FortranAStopStatementText
subroutine test_unstructured2(a, b, c)
integer :: i, j, k
real :: a(:,:,:), b(:,:,:), c(:,:,:)
!$acc parallel loop
do i = 1, 10
do j = 1, 10
do k = 1, 10
if (a(1,2,3) > 10) stop 'just to be unstructured'
end do
end do
end do
! CHECK-LABEL: func.func @_QPtest_unstructured2
! CHECK: acc.parallel
! CHECK: acc.loop
! CHECK: fir.call @_FortranAStopStatementText
! CHECK: acc.yield
! CHECK: acc.yield
! CHECK: acc.yield
end subroutine
subroutine test_unstructured3(a, b, c)
integer :: i, j, k
real :: a(:,:,:), b(:,:,:), c(:,:,:)
!$acc parallel
do i = 1, 10
do j = 1, 10
do k = 1, 10
if (a(1,2,3) > 10) stop 'just to be unstructured'
end do
end do
end do
!$acc end parallel
! CHECK-LABEL: func.func @_QPtest_unstructured3
! CHECK: acc.parallel
! CHECK: fir.call @_FortranAStopStatementText
! CHECK: acc.yield
! CHECK: acc.yield
end subroutine