blob: 53ae1a5e54675312a0ea28e80ca375b9763c4b9b [file] [edit]
! Check that acc.terminator is not inserted in data construct
! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s
program main
use, intrinsic :: iso_c_binding
implicit none
real(8), pointer :: a(:,:,:),b(:,:,:),c(:,:,:),c2(:,:,:)
integer, parameter :: n1 = 400, n2 = 20
integer*4 :: stat
integer :: i,j,k
stat = 0
do i=1,n2
!$acc data copyin(a(:,:,i),b(:,:,i),c(:,:,i)) copyout(c2(:,:,i))
!$acc host_data use_device(a(:,:,i),b(:,:,i),c(:,:,i))
!$acc end host_data
if ( stat .ne. 0 ) then
print *, "stat = ",stat
stop ! terminator here should be fir.unreachable
end if
!$acc parallel loop present(c(:,:,i),c2(:,:,i))
do j = 1,n1
do k = 1,n1
c2(k,j,i) = 1.5d0 * c(k,j,i)
enddo
enddo
!$acc end parallel loop
!$acc end data
enddo
!$acc wait
deallocate(a,b,c,c2)
end program
! CHECK-LABEL: func.func @_QQmain()
! CHECK: acc.data
! CHECK: acc.host_data
! CHECK: acc.terminator
! CHECK: fir.call @_FortranAStopStatement
! CHECK: fir.unreachable
! CHECK: acc.parallel
! CHECK-COUNT-3: acc.yield
! CHECK: acc.terminator