! 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