| ! { dg-do run } |
| |
| program myprog |
| type u |
| integer, dimension (:), pointer :: tarr1 |
| integer, dimension (:), pointer :: tarr2 |
| integer, dimension (:), pointer :: tarr3 |
| end type u |
| |
| type(u) :: myu1, myu2, myu3 |
| |
| integer, dimension (12), target :: myarray1 |
| integer, dimension (12), target :: myarray2 |
| integer, dimension (12), target :: myarray3 |
| integer, dimension (12), target :: myarray4 |
| integer, dimension (12), target :: myarray5 |
| integer, dimension (12), target :: myarray6 |
| integer, dimension (12), target :: myarray7 |
| integer, dimension (12), target :: myarray8 |
| integer, dimension (12), target :: myarray9 |
| |
| myu1%tarr1 => myarray1 |
| myu1%tarr2 => myarray2 |
| myu1%tarr3 => myarray3 |
| myu2%tarr1 => myarray4 |
| myu2%tarr2 => myarray5 |
| myu2%tarr3 => myarray6 |
| myu3%tarr1 => myarray7 |
| myu3%tarr2 => myarray8 |
| myu3%tarr3 => myarray9 |
| |
| myu1%tarr1 = 0 |
| myu1%tarr2 = 0 |
| myu1%tarr3 = 0 |
| myu2%tarr1 = 0 |
| myu2%tarr2 = 0 |
| myu2%tarr3 = 0 |
| myu3%tarr1 = 0 |
| myu3%tarr2 = 0 |
| myu3%tarr3 = 0 |
| |
| !$omp target map(to:myu1%tarr1) map(tofrom:myu1%tarr1(:)) & |
| !$omp& map(to:myu1%tarr2) map(tofrom:myu1%tarr2(:)) & |
| !$omp& map(to:myu1%tarr3) map(tofrom:myu1%tarr3(:)) & |
| !$omp& map(to:myu2%tarr1) map(tofrom:myu2%tarr1(:)) & |
| !$omp& map(to:myu2%tarr2) map(tofrom:myu2%tarr2(:)) & |
| !$omp& map(to:myu2%tarr3) map(tofrom:myu2%tarr3(:)) & |
| !$omp& map(to:myu3%tarr1) map(tofrom:myu3%tarr1(:)) & |
| !$omp& map(to:myu3%tarr2) map(tofrom:myu3%tarr2(:)) & |
| !$omp& map(to:myu3%tarr3) map(tofrom:myu3%tarr3(:)) |
| myu1%tarr1(1) = myu1%tarr1(1) + 1 |
| myu2%tarr1(1) = myu2%tarr1(1) + 1 |
| myu3%tarr1(1) = myu3%tarr1(1) + 1 |
| !$omp end target |
| |
| !$omp target map(to:myu1%tarr1) map(tofrom:myu1%tarr1(1:2)) & |
| !$omp& map(to:myu1%tarr2) map(tofrom:myu1%tarr2(1:2)) & |
| !$omp& map(to:myu1%tarr3) map(tofrom:myu1%tarr3(1:2)) & |
| !$omp& map(to:myu2%tarr1) map(tofrom:myu2%tarr1(1:2)) & |
| !$omp& map(to:myu2%tarr2) map(tofrom:myu2%tarr2(1:2)) & |
| !$omp& map(to:myu2%tarr3) map(tofrom:myu2%tarr3(1:2)) & |
| !$omp& map(to:myu3%tarr1) map(tofrom:myu3%tarr1(1:2)) & |
| !$omp& map(to:myu3%tarr2) map(tofrom:myu3%tarr2(1:2)) & |
| !$omp& map(to:myu3%tarr3) map(tofrom:myu3%tarr3(1:2)) |
| myu1%tarr2(1) = myu1%tarr2(1) + 1 |
| myu2%tarr2(1) = myu2%tarr2(1) + 1 |
| myu3%tarr2(1) = myu3%tarr2(1) + 1 |
| !$omp end target |
| |
| !$omp target map(to:myu1%tarr1) map(tofrom:myu1%tarr1(1)) & |
| !$omp& map(to:myu1%tarr2) map(tofrom:myu1%tarr2(1)) & |
| !$omp& map(to:myu1%tarr3) map(tofrom:myu1%tarr3(1)) & |
| !$omp& map(to:myu2%tarr1) map(tofrom:myu2%tarr1(1)) & |
| !$omp& map(to:myu2%tarr2) map(tofrom:myu2%tarr2(1)) & |
| !$omp& map(to:myu2%tarr3) map(tofrom:myu2%tarr3(1)) & |
| !$omp& map(to:myu3%tarr1) map(tofrom:myu3%tarr1(1)) & |
| !$omp& map(to:myu3%tarr2) map(tofrom:myu3%tarr2(1)) & |
| !$omp& map(to:myu3%tarr3) map(tofrom:myu3%tarr3(1)) |
| myu1%tarr3(1) = myu1%tarr3(1) + 1 |
| myu2%tarr3(1) = myu2%tarr3(1) + 1 |
| myu3%tarr3(1) = myu3%tarr3(1) + 1 |
| !$omp end target |
| |
| !$omp target map(tofrom:myu1%tarr1) & |
| !$omp& map(tofrom:myu1%tarr2) & |
| !$omp& map(tofrom:myu1%tarr3) & |
| !$omp& map(tofrom:myu2%tarr1) & |
| !$omp& map(tofrom:myu2%tarr2) & |
| !$omp& map(tofrom:myu2%tarr3) & |
| !$omp& map(tofrom:myu3%tarr1) & |
| !$omp& map(tofrom:myu3%tarr2) & |
| !$omp& map(tofrom:myu3%tarr3) |
| myu1%tarr2(1) = myu1%tarr2(1) + 1 |
| myu2%tarr2(1) = myu2%tarr2(1) + 1 |
| myu3%tarr2(1) = myu3%tarr2(1) + 1 |
| !$omp end target |
| |
| if (myu1%tarr1(1).ne.1) stop 1 |
| if (myu2%tarr1(1).ne.1) stop 2 |
| if (myu3%tarr1(1).ne.1) stop 3 |
| if (myu1%tarr2(1).ne.2) stop 4 |
| if (myu2%tarr2(1).ne.2) stop 5 |
| if (myu3%tarr2(1).ne.2) stop 6 |
| if (myu1%tarr3(1).ne.1) stop 7 |
| if (myu2%tarr3(1).ne.1) stop 8 |
| if (myu3%tarr3(1).ne.1) stop 9 |
| |
| end program myprog |