! { dg-additional-options "-cpp" }
!
! Ensure that polymorphic mapping is diagnosed as undefined behavior
! Ensure that static access to polymorphic variables works

! Some extended tests are only run with shared memory
! To enforce this (where possible) on the device side:
!   #define USE_USM_REQUIREMENT
! which is done in map-alloc-comp-9-usm.f90

subroutine test(case)
implicit none(type, external)
#ifdef USE_USM_REQUIREMENT
  !$omp requires unified_shared_memory
#endif

type t
  integer :: x(4)
end type t

type ta
  integer, allocatable :: x(:)
end type ta

type t2
  class(t), allocatable :: x
  class(t), allocatable :: x2(:)
end type t2

type t3
   type(t2) :: y
   type(t2) :: y2(2)
end type t3

type t4
   type(t3), allocatable :: y
   type(t3), allocatable :: y2(:)
end type t4

integer, value :: case

logical :: is_shared_mem

! Mangle stack addresses
integer, volatile :: case_var(100*case)

type(t), allocatable :: var1
type(ta), allocatable :: var1a
class(t), allocatable :: var2
type(t2), allocatable :: var3
type(t4), allocatable :: var4

case_var(100) = 0
!print *, 'case', case

var1 = t([1,2,3,4])
var1a = ta([-1,-2,-3,-4,-5])

var2 = t([11,22,33,44])

allocate(t2 :: var3)
allocate(t  :: var3%x)
allocate(t  :: var3%x2(2))
var3%x%x = [111,222,333,444]
var3%x2(1)%x = 2*[111,222,333,444]
var3%x2(2)%x = 3*[111,222,333,444]

allocate(t4 :: var4)
allocate(t3 :: var4%y)
allocate(t3 :: var4%y2(2))
allocate(t :: var4%y%y%x)
allocate(t :: var4%y%y%x2(2))
allocate(t :: var4%y2(1)%y%x)
allocate(t :: var4%y2(1)%y%x2(2))
allocate(t :: var4%y2(2)%y%x)
allocate(t :: var4%y2(2)%y%x2(2))
var4%y%y%x%x = -1 * [1111,2222,3333,4444]
var4%y%y%x2(1)%x = -2 * [1111,2222,3333,4444]
var4%y%y%x2(2)%x = -3 * [1111,2222,3333,4444]
var4%y2(1)%y%x%x = -4 * [1111,2222,3333,4444]
var4%y2(1)%y%x2(1)%x = -5 * [1111,2222,3333,4444]
var4%y2(1)%y%x2(2)%x = -6 * [1111,2222,3333,4444]
var4%y2(2)%y%x%x = -7 * [1111,2222,3333,4444]
var4%y2(2)%y%x2(1)%x = -8 * [1111,2222,3333,4444]
var4%y2(2)%y%x2(2)%x = -9 * [1111,2222,3333,4444]

#ifdef USE_USM_REQUIREMENT
is_shared_mem = .true.
#else
is_shared_mem = .false.
!$omp target map(to: is_shared_mem)
  is_shared_mem = .true.
!$omp end target
#endif

if (case == 1) then
  ! implicit mapping
  !$omp target
    if (any (var1%x /= [1,2,3,4])) stop 1
    var1%x = 2 * var1%x
  !$omp end target

  !$omp target
    if (any (var1a%x /= [-1,-2,-3,-4])) stop 2
    var1a%x = 3 * var1a%x
  !$omp end target

  !$omp target  ! { dg-warning "Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var2%x /= [11,22,33,44])) stop 3
    var2%x = 4 * var2%x
  !$omp end target

  !$omp target  ! { dg-warning "Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var3%x%x /= [111,222,333,444])) stop 4
    var3%x%x = 5 * var3%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var3%x2(1)%x /= 2*[111,222,333,444])) stop 4
      if (any (var3%x2(2)%x /= 3*[111,222,333,444])) stop 4
      var3%x2(1)%x = 5 * var3%x2(1)%x
      var3%x2(2)%x = 5 * var3%x2(2)%x
    end if
  !$omp end target

  !$omp target  ! { dg-warning "Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var4%y%y%x%x /= -1 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y%y%x2(1)%x /= -2 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y%y%x2(2)%x /= -3 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(1)%y%x%x /= -4 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(1)%y%x2(1)%x /= -5 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(1)%y%x2(2)%x /= -6 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(2)%y%x%x /= -7 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(2)%y%x2(1)%x /= -8 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(2)%y%x2(2)%x /= -9 * [1111,2222,3333,4444])) stop 5
    end if
    var4%y%y%x%x = 6 * var4%y%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y%y%x2(1)%x = 6 * var4%y%y%x2(1)%x
      var4%y%y%x2(2)%x = 6 * var4%y%y%x2(2)%x
    endif
    var4%y2(1)%y%x%x = 6 * var4%y2(1)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(1)%y%x2(1)%x = 6 * var4%y2(1)%y%x2(1)%x
      var4%y2(1)%y%x2(2)%x = 6 * var4%y2(1)%y%x2(2)%x
    endif
    var4%y2(2)%y%x%x = 6 * var4%y2(2)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(2)%y%x2(1)%x = 6 * var4%y2(2)%y%x2(1)%x
      var4%y2(2)%y%x2(2)%x = 6 * var4%y2(2)%y%x2(2)%x
    endif
  !$omp end target

else if (case == 2) then
  ! Use target with defaultmap(TO)

  !$omp target defaultmap(to : all)
    if (any (var1%x /= [1,2,3,4])) stop 1
    var1%x = 2 * var1%x
  !$omp end target

  !$omp target defaultmap(to : all)
    if (any (var1a%x /= [-1,-2,-3,-4])) stop 2
    var1a%x = 3 * var1a%x
  !$omp end target

  !$omp target defaultmap(to : all) ! { dg-warning "Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var2%x /= [11,22,33,44])) stop 3
    var2%x = 4 * var2%x
  !$omp end target

  !$omp target defaultmap(to : all)  ! { dg-warning "Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var3%x%x /= [111,222,333,444])) stop 4
    var3%x%x = 5 * var3%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var3%x2(1)%x /= 2*[111,222,333,444])) stop 4
      if (any (var3%x2(2)%x /= 3*[111,222,333,444])) stop 4
      var3%x2(1)%x = 5 * var3%x2(1)%x
      var3%x2(2)%x = 5 * var3%x2(2)%x
    endif
  !$omp end target

  !$omp target defaultmap(to : all) firstprivate(is_shared_mem)  ! { dg-warning "Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var4%y%y%x%x /= -1 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y%y%x2(1)%x /= -2 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y%y%x2(2)%x /= -3 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(1)%y%x%x /= -4 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(1)%y%x2(1)%x /= -5 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(1)%y%x2(2)%x /= -6 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(2)%y%x%x /= -7 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(2)%y%x2(1)%x /= -8 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(2)%y%x2(2)%x /= -9 * [1111,2222,3333,4444])) stop 5
    endif
    var4%y%y%x%x = 6 * var4%y%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y%y%x2(1)%x = 6 * var4%y%y%x2(1)%x
      var4%y%y%x2(2)%x = 6 * var4%y%y%x2(2)%x
    endif
    var4%y2(1)%y%x%x = 6 * var4%y2(1)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(1)%y%x2(1)%x = 6 * var4%y2(1)%y%x2(1)%x
      var4%y2(1)%y%x2(2)%x = 6 * var4%y2(1)%y%x2(2)%x
    endif
    var4%y2(2)%y%x%x = 6 * var4%y2(2)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(2)%y%x2(1)%x = 6 * var4%y2(2)%y%x2(1)%x
      var4%y2(2)%y%x2(2)%x = 6 * var4%y2(2)%y%x2(2)%x
    endif
  !$omp end target

else if (case == 3) then
  ! Use target with map clause

  !$omp target map(tofrom: var1)
    if (any (var1%x /= [1,2,3,4])) stop 1
    var1%x = 2 * var1%x
  !$omp end target

  !$omp target map(tofrom: var1a)
    if (any (var1a%x /= [-1,-2,-3,-4])) stop 2
    var1a%x = 3 * var1a%x
  !$omp end target

  !$omp target map(tofrom: var2)  ! { dg-warning "28: Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var2%x /= [11,22,33,44])) stop 3
    var2%x = 4 * var2%x
  !$omp end target

  !$omp target map(tofrom: var3)  ! { dg-warning "28: Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var3%x%x /= [111,222,333,444])) stop 4
    var3%x%x = 5 * var3%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var3%x2(1)%x /= 2*[111,222,333,444])) stop 4
      if (any (var3%x2(2)%x /= 3*[111,222,333,444])) stop 4
      var3%x2(1)%x = 5 * var3%x2(1)%x
      var3%x2(2)%x = 5 * var3%x2(2)%x
    endif
  !$omp end target

  !$omp target map(tofrom: var4)  ! { dg-warning "28: Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var4%y%y%x%x /= -1 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y%y%x2(1)%x /= -2 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y%y%x2(2)%x /= -3 * [1111,2222,3333,4444])) stop 5
    end if
    if (any (var4%y2(1)%y%x%x /= -4 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(1)%y%x2(1)%x /= -5 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(1)%y%x2(2)%x /= -6 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(2)%y%x%x /= -7 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(2)%y%x2(1)%x /= -8 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(2)%y%x2(2)%x /= -9 * [1111,2222,3333,4444])) stop 5
    endif
    var4%y%y%x%x = 6 * var4%y%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y%y%x2(1)%x = 6 * var4%y%y%x2(1)%x
      var4%y%y%x2(2)%x = 6 * var4%y%y%x2(2)%x
    endif
    var4%y2(1)%y%x%x = 6 * var4%y2(1)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(1)%y%x2(1)%x = 6 * var4%y2(1)%y%x2(1)%x
      var4%y2(1)%y%x2(2)%x = 6 * var4%y2(1)%y%x2(2)%x
    endif
    var4%y2(2)%y%x%x = 6 * var4%y2(2)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(2)%y%x2(1)%x = 6 * var4%y2(2)%y%x2(1)%x
      var4%y2(2)%y%x2(2)%x = 6 * var4%y2(2)%y%x2(2)%x
    endif
  !$omp end target

else if (case == 4) then
  ! Use target with map clause -- NOTE: This uses TO not TOFROM

  !$omp target map(to: var1)
    if (any (var1%x /= [1,2,3,4])) stop 1
    var1%x = 2 * var1%x
  !$omp end target

  !$omp target map(to: var1a)
    if (any (var1a%x /= [-1,-2,-3,-4])) stop 2
    var1a%x = 3 * var1a%x
  !$omp end target

  !$omp target map(to: var2)  ! { dg-warning "24: Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var2%x /= [11,22,33,44])) stop 3
    var2%x = 4 * var2%x
  !$omp end target

  !$omp target map(to: var3)  ! { dg-warning "24: Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var3%x%x /= [111,222,333,444])) stop 4
    var3%x%x = 5 * var3%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var3%x2(1)%x /= 2*[111,222,333,444])) stop 4
      if (any (var3%x2(2)%x /= 3*[111,222,333,444])) stop 4
      var3%x2(1)%x = 5 * var3%x2(1)%x
      var3%x2(2)%x = 5 * var3%x2(2)%x
    endif
  !$omp end target

  !$omp target map(to: var4)  ! { dg-warning "24: Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var4%y%y%x%x /= -1 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y%y%x2(1)%x /= -2 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y%y%x2(2)%x /= -3 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(1)%y%x%x /= -4 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(1)%y%x2(1)%x /= -5 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(1)%y%x2(2)%x /= -6 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(2)%y%x%x /= -7 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(2)%y%x2(1)%x /= -8 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(2)%y%x2(2)%x /= -9 * [1111,2222,3333,4444])) stop 5
    endif
    var4%y%y%x%x = 6 * var4%y%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y%y%x2(1)%x = 6 * var4%y%y%x2(1)%x
      var4%y%y%x2(2)%x = 6 * var4%y%y%x2(2)%x
    endif
    var4%y2(1)%y%x%x = 6 * var4%y2(1)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(1)%y%x2(1)%x = 6 * var4%y2(1)%y%x2(1)%x
      var4%y2(1)%y%x2(2)%x = 6 * var4%y2(1)%y%x2(2)%x
    endif
    var4%y2(2)%y%x%x = 6 * var4%y2(2)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(2)%y%x2(1)%x = 6 * var4%y2(2)%y%x2(1)%x
      var4%y2(2)%y%x2(2)%x = 6 * var4%y2(2)%y%x2(2)%x
    endif
  !$omp end target

else if (case == 5) then
  ! Use target enter/exit data + target with explicit map
  !$omp target enter data map(to: var1)
  !$omp target enter data map(to: var1a)
  !$omp target enter data map(to: var2)  ! { dg-warning "35: Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
  !$omp target enter data map(to: var3)  ! { dg-warning "35: Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
  !$omp target enter data map(to: var4)  ! { dg-warning "35: Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }

  !$omp target map(to: var1)
    if (any (var1%x /= [1,2,3,4])) stop 1
    var1%x = 2 * var1%x
  !$omp end target

  !$omp target map(to: var1a)
    if (any (var1a%x /= [-1,-2,-3,-4])) stop 2
    var1a%x = 3 * var1a%x
  !$omp end target

  !$omp target map(to: var2)  ! { dg-warning "24: Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var2%x /= [11,22,33,44])) stop 3
    var2%x = 4 * var2%x
  !$omp end target

  !$omp target map(to: var3)  ! { dg-warning "24: Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var3%x%x /= [111,222,333,444])) stop 4
    var3%x%x = 5 * var3%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var3%x2(1)%x /= 2*[111,222,333,444])) stop 4
      if (any (var3%x2(2)%x /= 3*[111,222,333,444])) stop 4
      var3%x2(1)%x = 5 * var3%x2(1)%x
      var3%x2(2)%x = 5 * var3%x2(2)%x
    endif
  !$omp end target

  !$omp target map(to: var4)  ! { dg-warning "24: Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var4%y%y%x%x /= -1 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y%y%x2(1)%x /= -2 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y%y%x2(2)%x /= -3 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(1)%y%x%x /= -4 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(1)%y%x2(1)%x /= -5 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(1)%y%x2(2)%x /= -6 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(2)%y%x%x /= -7 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(2)%y%x2(1)%x /= -8 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(2)%y%x2(2)%x /= -9 * [1111,2222,3333,4444])) stop 5
    endif
    var4%y%y%x%x = 6 * var4%y%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y%y%x2(1)%x = 6 * var4%y%y%x2(1)%x
      var4%y%y%x2(2)%x = 6 * var4%y%y%x2(2)%x
    endif
    var4%y2(1)%y%x%x = 6 * var4%y2(1)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(1)%y%x2(1)%x = 6 * var4%y2(1)%y%x2(1)%x
      var4%y2(1)%y%x2(2)%x = 6 * var4%y2(1)%y%x2(2)%x
    endif
    var4%y2(2)%y%x%x = 6 * var4%y2(2)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(2)%y%x2(1)%x = 6 * var4%y2(2)%y%x2(1)%x
      var4%y2(2)%y%x2(2)%x = 6 * var4%y2(2)%y%x2(2)%x
    endif
  !$omp end target

  !$omp target exit data map(from: var1)
  !$omp target exit data map(from: var1a)
  !$omp target exit data map(from: var2)  ! { dg-warning "36: Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
  !$omp target exit data map(from: var3)  ! { dg-warning "36: Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
  !$omp target exit data map(from: var4)  ! { dg-warning "36: Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }

else if (case == 6) then
  ! Use target enter/exit data + target with implicit map

  !$omp target enter data map(to: var1)
  !$omp target enter data map(to: var1a)
  !$omp target enter data map(to: var2)  ! { dg-warning "35: Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
  !$omp target enter data map(to: var3)  ! { dg-warning "35: Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
  !$omp target enter data map(to: var4)  ! { dg-warning "35: Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }

  !$omp target
    if (any (var1%x /= [1,2,3,4])) stop 1
    var1%x = 2 * var1%x
  !$omp end target

  !$omp target
    if (any (var1a%x /= [-1,-2,-3,-4])) stop 2
    var1a%x = 3 * var1a%x
  !$omp end target

  !$omp target  ! { dg-warning "Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var2%x /= [11,22,33,44])) stop 3
    var2%x = 4 * var2%x
  !$omp end target

  !$omp target  ! { dg-warning "Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var3%x%x /= [111,222,333,444])) stop 4
    var3%x%x = 5 * var3%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var3%x2(1)%x /= 2*[111,222,333,444])) stop 4
      if (any (var3%x2(2)%x /= 3*[111,222,333,444])) stop 4
      var3%x2(1)%x = 5 * var3%x2(1)%x
      var3%x2(2)%x = 5 * var3%x2(2)%x
    endif
  !$omp end target

  !$omp target  ! { dg-warning "Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }
    if (any (var4%y%y%x%x /= -1 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y%y%x2(1)%x /= -2 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y%y%x2(2)%x /= -3 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(1)%y%x%x /= -4 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(1)%y%x2(1)%x /= -5 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(1)%y%x2(2)%x /= -6 * [1111,2222,3333,4444])) stop 5
    endif
    if (any (var4%y2(2)%y%x%x /= -7 * [1111,2222,3333,4444])) stop 5
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      if (any (var4%y2(2)%y%x2(1)%x /= -8 * [1111,2222,3333,4444])) stop 5
      if (any (var4%y2(2)%y%x2(2)%x /= -9 * [1111,2222,3333,4444])) stop 5
    endif
    var4%y%y%x%x = 6 * var4%y%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y%y%x2(1)%x = 6 * var4%y%y%x2(1)%x
      var4%y%y%x2(2)%x = 6 * var4%y%y%x2(2)%x
    endif
    var4%y2(1)%y%x%x = 6 * var4%y2(1)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(1)%y%x2(1)%x = 6 * var4%y2(1)%y%x2(1)%x
      var4%y2(1)%y%x2(2)%x = 6 * var4%y2(1)%y%x2(2)%x
    endif
    var4%y2(2)%y%x%x = 6 * var4%y2(2)%y%x%x
    if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
      var4%y2(2)%y%x2(1)%x = 6 * var4%y2(2)%y%x2(1)%x
      var4%y2(2)%y%x2(2)%x = 6 * var4%y2(2)%y%x2(2)%x
    endif
  !$omp end target

  !$omp target exit data map(from: var1)
  !$omp target exit data map(from: var1a)
  !$omp target exit data map(from: var2)  ! { dg-warning "36: Mapping of polymorphic list item 'var2' is unspecified behavior \\\[-Wopenmp\\\]" }
  !$omp target exit data map(from: var3)  ! { dg-warning "36: Mapping of polymorphic list item 'var3->x' is unspecified behavior \\\[-Wopenmp\\\]" }
  !$omp target exit data map(from: var4)  ! { dg-warning "36: Mapping of polymorphic list item 'var4\.\[0-9\]+->y->y\.x' is unspecified behavior \\\[-Wopenmp\\\]" }

else
  error stop
end if

if ((case /= 2 .and. case /= 4)  .or. is_shared_mem) then
  ! The target update should have been active, check for the updated values
  if (any (var1%x /= 2 * [1,2,3,4])) stop 11
  if (any (var1a%x /= 3 * [-1,-2,-3,-4])) stop 22
  if (any (var2%x /= 4 * [11,22,33,44])) stop 33

  if (any (var3%x%x /= 5 * [111,222,333,444])) stop 44
  if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
    if (any (var3%x2(1)%x /= 2 * 5 * [111,222,333,444])) stop 44
    if (any (var3%x2(2)%x /= 3 * 5 * [111,222,333,444])) stop 44
  endif

  if (any (var4%y%y%x%x /= -1 * 6 * [1111,2222,3333,4444])) stop 55
  if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
    if (any (var4%y%y%x2(1)%x /= -2 * 6 * [1111,2222,3333,4444])) stop 55
    if (any (var4%y%y%x2(2)%x /= -3 * 6 * [1111,2222,3333,4444])) stop 55
  endif
  if (any (var4%y2(1)%y%x%x /= -4 * 6 * [1111,2222,3333,4444])) stop 55
  if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
    if (any (var4%y2(1)%y%x2(1)%x /= -5 * 6 * [1111,2222,3333,4444])) stop 55
    if (any (var4%y2(1)%y%x2(2)%x /= -6 * 6 * [1111,2222,3333,4444])) stop 55
  endif
  if (any (var4%y2(2)%y%x%x /= -7 * 6 * [1111,2222,3333,4444])) stop 55
  if (is_shared_mem) then  ! For stride data, this accesses the host's _vtab
    if (any (var4%y2(2)%y%x2(1)%x /= -8 * 6 * [1111,2222,3333,4444])) stop 55
    if (any (var4%y2(2)%y%x2(2)%x /= -9 * 6 * [1111,2222,3333,4444])) stop 55
  endif
else
  ! The old host values should still be there as 'to:' created a device copy
  if (any (var1%x /= [1,2,3,4])) stop 12
  if (any (var1a%x /= [-1,-2,-3,-4])) stop 22
  if (any (var2%x /= [11,22,33,44])) stop 33

  if (any (var3%x%x /= [111,222,333,444])) stop 44
  ! .not. is_shared_mem:
  ! if (any (var3%x2(1)%x /= 2*[111,222,333,444])) stop 44
  ! if (any (var3%x2(2)%x /= 3*[111,222,333,444])) stop 44

  if (any (var4%y%y%x%x /= -1 * [1111,2222,3333,4444])) stop 55
  if (any (var4%y%y%x2(1)%x /= -2 * [1111,2222,3333,4444])) stop 55
  if (any (var4%y%y%x2(2)%x /= -3 * [1111,2222,3333,4444])) stop 55
  if (any (var4%y2(1)%y%x%x /= -4 * [1111,2222,3333,4444])) stop 55
  ! .not. is_shared_mem:
  !if (any (var4%y2(1)%y%x2(1)%x /= -5 * [1111,2222,3333,4444])) stop 55
  !if (any (var4%y2(1)%y%x2(2)%x /= -6 * [1111,2222,3333,4444])) stop 55
  if (any (var4%y2(2)%y%x%x /= -7 * [1111,2222,3333,4444])) stop 55
  ! .not. is_shared_mem:
  !if (any (var4%y2(2)%y%x2(1)%x /= -8 * [1111,2222,3333,4444])) stop 55
  !if (any (var4%y2(2)%y%x2(2)%x /= -9 * [1111,2222,3333,4444])) stop 55
end if
if (case_var(100) /= 0) stop 123
end subroutine test

program main
  use omp_lib
  implicit none(type, external)
#ifdef USE_USM_REQUIREMENT
  !$omp requires unified_shared_memory
#endif

  interface
    subroutine test(case)
      integer, value :: case
    end
  end interface
  integer :: dev
  call run_it(omp_get_default_device())
  do dev = 0, omp_get_num_devices()
    call run_it(dev)
  end do
  call run_it(omp_initial_device)
!  print *, 'all done'
contains
subroutine run_it(dev)
  integer, value :: dev
!  print *, 'DEVICE', dev
  call omp_set_default_device(dev)
  call test(1)
  call test(2)
  call test(3)
  call test(4)
  call test(5)
  call test(6)
end
end
