1*37234499Sagozillon! Offloading test with two target regions mapping the same declare target 2*37234499Sagozillon! Fortran array and writing some values to it before checking the host 3*37234499Sagozillon! correctly receives the correct updates made on the device. 488234488SEthan Luis McDonough! REQUIRES: flang, amdgpu 5330d8983SJohannes Doerfert 6330d8983SJohannes Doerfert! RUN: %libomptarget-compile-fortran-run-and-check-generic 7330d8983SJohannes Doerfertmodule test_0 8330d8983SJohannes Doerfert implicit none 9330d8983SJohannes Doerfert integer :: sp(10) = (/0,0,0,0,0,0,0,0,0,0/) 10330d8983SJohannes Doerfert !$omp declare target link(sp) 11330d8983SJohannes Doerfertend module test_0 12330d8983SJohannes Doerfert 13330d8983SJohannes Doerfertprogram main 14330d8983SJohannes Doerfert use test_0 15330d8983SJohannes Doerfert integer :: i = 1 16330d8983SJohannes Doerfert integer :: j = 11 17330d8983SJohannes Doerfert 18330d8983SJohannes Doerfert!$omp target map(tofrom:sp) map(to: i, j) 19330d8983SJohannes Doerfert do while (i <= j) 20330d8983SJohannes Doerfert sp(i) = i; 21330d8983SJohannes Doerfert i = i + 1 22330d8983SJohannes Doerfert end do 23330d8983SJohannes Doerfert!$omp end target 24330d8983SJohannes Doerfert 25330d8983SJohannes Doerfert!$omp target map(tofrom:sp) map(to: i, j) 26330d8983SJohannes Doerfert do while (i <= j) 27330d8983SJohannes Doerfert sp(i) = sp(i) + i; 28330d8983SJohannes Doerfert i = i + 1 29330d8983SJohannes Doerfert end do 30330d8983SJohannes Doerfert!$omp end target 31330d8983SJohannes Doerfert 32330d8983SJohannes Doerfertprint *, sp(:) 33330d8983SJohannes Doerfert 34330d8983SJohannes Doerfertend program 35330d8983SJohannes Doerfert 36330d8983SJohannes Doerfert! CHECK: 2 4 6 8 10 12 14 16 18 20 37