brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 16100f9 Raw
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