! { dg-do run }

  call foo ()
contains
  subroutine foo ()
    integer, target :: A(30)
    integer, pointer :: p(:)
    !$omp target data map(A(1:10))
      p => A
      !$omp target map(p(4:10)) map(A(1:10))
        A(3) = 777
        p(9) = 777
        A(9) = 999
      !$omp end target
    !$omp end target data
    if (A(3) /= 777 .or. A(9) /= 999) STOP 1
  end subroutine
end