1! { dg-do run } 2 3program myprog 4 5 type mytype 6 integer, allocatable :: myarr(:,:) 7 end type mytype 8 integer :: i 9 10 type(mytype), allocatable :: typearr(:) 11 12 allocate(typearr(1:100)) 13 14 do i=1,100 15 allocate(typearr(i)%myarr(1:100,1:100)) 16 end do 17 18 do i=1,100 19 typearr(i)%myarr(:,:) = 0 20 end do 21 22 !$acc enter data copyin(typearr) 23 24 do i=1,100 25 !$acc enter data copyin(typearr(i)%myarr) 26 end do 27 28 i=33 29 typearr(i)%myarr(:,:) = 50 30 31 !$acc update device(typearr(i)%myarr(:,:)) 32 33 do i=1,100 34 !$acc exit data copyout(typearr(i)%myarr) 35 end do 36 37 !$acc exit data delete(typearr) 38 39 do i=1,100 40 if (i.eq.33) then 41 if (any(typearr(i)%myarr.ne.50)) stop 1 42 else 43 if (any(typearr(i)%myarr.ne.0)) stop 2 44 end if 45 end do 46 47 do i=1,100 48 deallocate(typearr(i)%myarr) 49 end do 50 51 deallocate(typearr) 52 53end program myprog 54