| ! Test the implicit `declare target to` interaction with `target update from` |
| ! REQUIRES: flang, amdgpu |
| |
| ! RUN: %libomptarget-compile-fortran-run-and-check-generic |
| module test |
| implicit none |
| integer :: array(10) |
| !$omp declare target(array) |
| end module test |
| |
| PROGRAM main |
| use test |
| implicit none |
| integer :: i |
| |
| do i = 1, 10 |
| array(i) = 0 |
| end do |
| |
| !$omp target |
| do i = 1, 10 |
| array(i) = i |
| end do |
| !$omp end target |
| |
| !$omp target |
| do i = 1, 10 |
| array(i) = array(i) + i |
| end do |
| !$omp end target |
| |
| print *, array |
| |
| !$omp target update from(array) |
| |
| print *, array |
| END PROGRAM |
| |
| ! CHECK: 0 0 0 0 0 0 0 0 0 0 |
| ! CHECK: 2 4 6 8 10 12 14 16 18 20 |