diff libgomp/testsuite/libgomp.fortran/allocatable2.f90 @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgomp/testsuite/libgomp.fortran/allocatable2.f90	Fri Jul 17 14:47:48 2009 +0900
@@ -0,0 +1,47 @@
+! { dg-do run }
+! { dg-require-effective-target tls_runtime }
+!$ use omp_lib
+
+  integer, save, allocatable :: a(:, :)
+  integer, allocatable :: b(:, :)
+  integer :: n
+  logical :: l
+!$omp threadprivate (a)
+  if (allocated (a)) call abort
+  call omp_set_dynamic (.false.)
+  l = .false.
+!$omp parallel num_threads (4) reduction(.or.:l)
+  allocate (a(-1:1, 7:10))
+  a(:, :) = omp_get_thread_num () + 6
+  l = l.or..not.allocated (a)
+  l = l.or.size(a).ne.12.or.size(a,1).ne.3.or.size(a,2).ne.4
+!$omp end parallel
+  if (l.or.any(a.ne.6)) call abort ()
+!$omp parallel num_threads (4) copyin (a) reduction(.or.:l) private (b)
+  l = l.or.allocated (b)
+  l = l.or..not.allocated (a)
+  l = l.or.size(a).ne.12.or.size(a,1).ne.3.or.size(a,2).ne.4
+  l = l.or.any(a.ne.6)
+  allocate (b(1, 3))
+  a(:, :) = omp_get_thread_num () + 36
+  b(:, :) = omp_get_thread_num () + 66
+  !$omp single
+    n = omp_get_thread_num ()
+  !$omp end single copyprivate (a, b)
+  l = l.or..not.allocated (a)
+  l = l.or.size(a).ne.12.or.size(a,1).ne.3.or.size(a,2).ne.4
+  l = l.or.any(a.ne.(n + 36))
+  l = l.or..not.allocated (b)
+  l = l.or.size(b).ne.3.or.size(b,1).ne.1.or.size(b,2).ne.3
+  l = l.or.any(b.ne.(n + 66))
+  deallocate (b)
+  l = l.or.allocated (b)
+!$omp end parallel
+  if (n.lt.0 .or. n.ge.4) call abort
+  if (l.or.any(a.ne.(n + 36))) call abort
+!$omp parallel num_threads (4) reduction(.or.:l)
+  deallocate (a)
+  l = l.or.allocated (a)
+!$omp end parallel
+  if (l.or.allocated (a)) call abort
+end