]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - libgomp/testsuite/libgomp.fortran/workshare1.f90
Imported gcc-4.4.3
[msp430-gcc.git] / libgomp / testsuite / libgomp.fortran / workshare1.f90
diff --git a/libgomp/testsuite/libgomp.fortran/workshare1.f90 b/libgomp/testsuite/libgomp.fortran/workshare1.f90
new file mode 100644 (file)
index 0000000..a0e6ff9
--- /dev/null
@@ -0,0 +1,30 @@
+function foo ()
+  integer :: foo
+  logical :: foo_seen
+  common /foo_seen/ foo_seen
+  foo_seen = .true.
+  foo = 3
+end
+function bar ()
+  integer :: bar
+  logical :: bar_seen
+  common /bar_seen/ bar_seen
+  bar_seen = .true.
+  bar = 3
+end
+  integer :: a (10), b (10), foo, bar
+  logical :: foo_seen, bar_seen
+  common /foo_seen/ foo_seen
+  common /bar_seen/ bar_seen
+
+  foo_seen = .false.
+  bar_seen = .false.
+!$omp parallel workshare if (foo () .gt. 2) num_threads (bar () + 1)
+  a = 10
+  b = 20
+  a(1:5) = max (a(1:5), b(1:5))
+!$omp end parallel workshare
+  if (any (a(1:5) .ne. 20)) call abort
+  if (any (a(6:10) .ne. 10)) call abort
+  if (.not. foo_seen .or. .not. bar_seen) call abort
+end