! { dg-do run } module mymod type F integer :: a, b, c integer, dimension(10) :: d end type F type G integer :: x, y type(F), pointer :: myf integer :: z end type G end module mymod program myprog use mymod type(F), target :: ftmp type(G) :: gvar gvar%myf => ftmp gvar%myf%d = 0 !$omp target map(to:gvar%myf) map(tofrom: gvar%myf%b, gvar%myf%d) gvar%myf%d(1) = gvar%myf%d(1) + 1 !$omp end target if (gvar%myf%d(1).ne.1) stop 1 end program myprog