1! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s 2 3subroutine test_unstructured1(a, b, c) 4 integer :: i, j, k 5 real :: a(:,:,:), b(:,:,:), c(:,:,:) 6 7 !$acc data copy(a, b, c) 8 9 !$acc kernels 10 a(:,:,:) = 0.0 11 !$acc end kernels 12 13 !$acc kernels 14 do i = 1, 10 15 do j = 1, 10 16 do k = 1, 10 17 end do 18 end do 19 end do 20 !$acc end kernels 21 22 do i = 1, 10 23 do j = 1, 10 24 do k = 1, 10 25 end do 26 end do 27 28 if (a(1,2,3) > 10) stop 'just to be unstructured' 29 end do 30 31 !$acc end data 32 33end subroutine 34 35! CHECK-LABEL: func.func @_QPtest_unstructured1 36! CHECK: acc.data 37! CHECK: acc.kernels 38! CHECK: acc.kernels 39! CHECK: fir.call @_FortranAStopStatementText 40 41 42subroutine test_unstructured2(a, b, c) 43 integer :: i, j, k 44 real :: a(:,:,:), b(:,:,:), c(:,:,:) 45 46 !$acc parallel loop 47 do i = 1, 10 48 do j = 1, 10 49 do k = 1, 10 50 if (a(1,2,3) > 10) stop 'just to be unstructured' 51 end do 52 end do 53 end do 54 55! CHECK-LABEL: func.func @_QPtest_unstructured2 56! CHECK: acc.parallel 57! CHECK: acc.loop 58! CHECK: fir.call @_FortranAStopStatementText 59! CHECK: acc.yield 60! CHECK: acc.yield 61! CHECK: acc.yield 62 63end subroutine 64 65subroutine test_unstructured3(a, b, c) 66 integer :: i, j, k 67 real :: a(:,:,:), b(:,:,:), c(:,:,:) 68 69 !$acc parallel 70 do i = 1, 10 71 do j = 1, 10 72 do k = 1, 10 73 if (a(1,2,3) > 10) stop 'just to be unstructured' 74 end do 75 end do 76 end do 77 !$acc end parallel 78 79! CHECK-LABEL: func.func @_QPtest_unstructured3 80! CHECK: acc.parallel 81! CHECK: fir.call @_FortranAStopStatementText 82! CHECK: acc.yield 83! CHECK: acc.yield 84 85end subroutine 86