blob: f310155990374c8018c7b9ec47b35a18bc1ef073 [file] [log] [blame]
! { dg-do run }
! PR fortran/120505
! This test case checks that explicit mapping of allocatable DT components
! followed by implicit deep mapping works.
module m
type t
integer, allocatable :: den1(:,:), den2(:,:)
end type t
type t2
type(t), allocatable :: tiles(:)
end type t2
type(t2) :: var
end
use m
allocate(var%tiles(1))
var%tiles(1)%den1 = reshape([1,2,3,4],[2,2])
var%tiles(1)%den2 = reshape([11,22,33,44],[2,2])
!$omp target enter data map(var%tiles(1)%den1, var%tiles(1)%den2)
!$omp target
if (any (var%tiles(1)%den1 /= reshape([1,2,3,4],[2,2]))) stop 1
if (any (var%tiles(1)%den2 /= reshape([11,22,33,44],[2,2]))) stop 1
var%tiles(1)%den1 = var%tiles(1)%den1 + 5
var%tiles(1)%den2 = var%tiles(1)%den2 + 7
!$omp end target
!$omp target exit data map(var%tiles(1)%den1, var%tiles(1)%den2)
if (any (var%tiles(1)%den1 /= 5 + reshape([1,2,3,4],[2,2]))) stop 1
if (any (var%tiles(1)%den2 /= 7 + reshape([11,22,33,44],[2,2]))) stop 1
end