1*fa56e8bbSagozillon! Basic offloading test that makes sure we can use the predominantly host 2*fa56e8bbSagozillon! pragma threadprivate in the same program as target code 3*fa56e8bbSagozillon! REQUIRES: flang, amdgpu 4*fa56e8bbSagozillon 5*fa56e8bbSagozillon! RUN: %libomptarget-compile-fortran-run-and-check-generic 6*fa56e8bbSagozillonprogram main 7*fa56e8bbSagozillon implicit none 8*fa56e8bbSagozillon 9*fa56e8bbSagozillon type dtype 10*fa56e8bbSagozillon integer :: val(10) 11*fa56e8bbSagozillon end type dtype 12*fa56e8bbSagozillon 13*fa56e8bbSagozillon integer :: i 14*fa56e8bbSagozillon type(dtype), pointer :: pointer1 15*fa56e8bbSagozillon type(dtype), pointer :: pointer2=>null() 16*fa56e8bbSagozillon integer, dimension(:), pointer :: data_pointer 17*fa56e8bbSagozillon 18*fa56e8bbSagozillon!$omp threadprivate(pointer2) 19*fa56e8bbSagozillon 20*fa56e8bbSagozillonnullify(pointer1) 21*fa56e8bbSagozillonallocate(pointer1) 22*fa56e8bbSagozillon 23*fa56e8bbSagozillonpointer2=>pointer1 24*fa56e8bbSagozillonpointer2%val(:)=1 25*fa56e8bbSagozillondata_pointer=>pointer2%val 26*fa56e8bbSagozillon 27*fa56e8bbSagozillon!$omp target 28*fa56e8bbSagozillon do i = 1, 10 29*fa56e8bbSagozillon data_pointer(i) = i 30*fa56e8bbSagozillon end do 31*fa56e8bbSagozillon!$omp end target 32*fa56e8bbSagozillon 33*fa56e8bbSagozillonprint *, data_pointer 34*fa56e8bbSagozillon 35*fa56e8bbSagozillonend program main 36*fa56e8bbSagozillon 37*fa56e8bbSagozillon! CHECK: 1 2 3 4 5 6 7 8 9 10 38