54 lines · plain
1! Check that acc.terminator is not inserted in data construct2 3! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s4 5program main6 use, intrinsic :: iso_c_binding7 implicit none8 9 real(8), pointer :: a(:,:,:),b(:,:,:),c(:,:,:),c2(:,:,:)10 integer, parameter :: n1 = 400, n2 = 2011 integer*4 :: stat12 integer :: i,j,k13 14 stat = 015 do i=1,n216 17 !$acc data copyin(a(:,:,i),b(:,:,i),c(:,:,i)) copyout(c2(:,:,i))18 19 !$acc host_data use_device(a(:,:,i),b(:,:,i),c(:,:,i))20 21 !$acc end host_data22 23 if ( stat .ne. 0 ) then24 print *, "stat = ",stat25 stop ! terminator here should be fir.unreachable26 end if27 28 !$acc parallel loop present(c(:,:,i),c2(:,:,i))29 do j = 1,n130 do k = 1,n131 c2(k,j,i) = 1.5d0 * c(k,j,i)32 enddo33 enddo34 !$acc end parallel loop35 36 !$acc end data37 38 enddo39 40 !$acc wait41 42 deallocate(a,b,c,c2)43end program44 45! CHECK-LABEL: func.func @_QQmain()46! CHECK: acc.data47! CHECK: acc.host_data48! CHECK: acc.terminator49! CHECK: fir.call @_FortranAStopStatement50! CHECK: fir.unreachable51! CHECK: acc.parallel52! CHECK-COUNT-3: acc.yield53! CHECK: acc.terminator54