diff options
Diffstat (limited to 'libgomp/testsuite/libgomp.fortran/crayptr2.f90')
-rw-r--r-- | libgomp/testsuite/libgomp.fortran/crayptr2.f90 | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.fortran/crayptr2.f90 b/libgomp/testsuite/libgomp.fortran/crayptr2.f90 new file mode 100644 index 000000000..4ad7cf228 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/crayptr2.f90 @@ -0,0 +1,31 @@ +! { dg-do run } +! { dg-options "-fopenmp -fcray-pointer" } +! { dg-require-effective-target tls_runtime } + + use omp_lib + integer :: a, b, c, d, p + logical :: l + pointer (ip, p) + save ip +!$omp threadprivate (ip) + a = 1 + b = 2 + c = 3 + l = .false. +!$omp parallel num_threads (3) reduction (.or.:l) + if (omp_get_thread_num () .eq. 0) then + ip = loc (a) + elseif (omp_get_thread_num () .eq. 1) then + ip = loc (b) + else + ip = loc (c) + end if + l = p .ne. omp_get_thread_num () + 1 +!$omp single + d = omp_get_thread_num () +!$omp end single copyprivate (d, ip) + l = l .or. (p .ne. d + 1) +!$omp end parallel + + if (l) call abort +end |