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