1! Offloading test checking interaction of two derived type's with two explicit
2! array members each being mapped with bounds to target
3! REQUIRES: flang, amdgpu
4
5! RUN: %libomptarget-compile-fortran-run-and-check-generic
6program main
7    type :: scalar_array
8    real(4) :: break_0
9    real(4) :: array_x(10)
10    real(4) :: break_1
11    real(4) :: array_y(10)
12    real(4) :: break_3
13    end type scalar_array
14
15    type(scalar_array) :: scalar_arr1
16    type(scalar_array) :: scalar_arr2
17
18  do i = 1, 10
19    scalar_arr1%array_x(i) = i
20    scalar_arr2%array_x(i) = i
21  end do
22
23  !$omp target map(tofrom:scalar_arr1%array_x(3:6), scalar_arr1%array_y(3:6), scalar_arr2%array_x(3:6), scalar_arr2%array_y(3:6))
24    do i = 1, 10
25      scalar_arr2%array_y(i) = scalar_arr1%array_x(i)
26    end do
27
28    do i = 1, 10
29      scalar_arr1%array_y(i) = scalar_arr2%array_x(i)
30    end do
31  !$omp end target
32
33  print*, scalar_arr1%array_x
34  print*, scalar_arr2%array_y
35
36  print*, scalar_arr2%array_x
37  print*, scalar_arr1%array_y
38end program main
39
40!CHECK: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
41!CHECK: 0. 0. 3. 4. 5. 6. 0. 0. 0. 0.
42!CHECK: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
43!CHECK: 0. 0. 3. 4. 5. 6. 0. 0. 0. 0.
44