diff libgomp/testsuite/libgomp.fortran/lastprivate2.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/lastprivate2.f90	Fri Jul 17 14:47:48 2009 +0900
@@ -0,0 +1,141 @@
+program lastprivate
+  integer :: i, k
+  common /c/ i, k
+  !$omp parallel num_threads (4)
+  call test1
+  !$omp end parallel
+  if (i .ne. 21 .or. k .ne. 20) call abort
+  !$omp parallel num_threads (4)
+  call test2
+  !$omp end parallel
+  if (i .ne. 64 .or. k .ne. 61) call abort
+  !$omp parallel num_threads (4)
+  call test3
+  !$omp end parallel
+  if (i .ne. 14 .or. k .ne. 11) call abort
+  call test4
+  call test5
+  call test6
+  call test7
+  call test8
+  call test9
+  call test10
+  call test11
+  call test12
+contains
+  subroutine test1
+    integer :: i, k
+    common /c/ i, k
+    !$omp do lastprivate (i, k)
+    do i = 1, 20
+      k = i
+    end do
+  end subroutine test1
+  subroutine test2
+    integer :: i, k
+    common /c/ i, k
+    !$omp do lastprivate (i, k)
+    do i = 7, 61, 3
+      k = i
+    end do
+  end subroutine test2
+  function ret3 ()
+    integer :: ret3
+    ret3 = 3
+  end function ret3
+  subroutine test3
+    integer :: i, k
+    common /c/ i, k
+    !$omp do lastprivate (i, k)
+    do i = -10, 11, ret3 ()
+      k = i
+    end do
+  end subroutine test3
+  subroutine test4
+    integer :: j, l
+    !$omp parallel do lastprivate (j, l) num_threads (4)
+    do j = 1, 20
+      l = j
+    end do
+    if (j .ne. 21 .or. l .ne. 20) call abort
+  end subroutine test4
+  subroutine test5
+    integer :: j, l
+    l = 77
+    !$omp parallel do lastprivate (j, l) num_threads (4) firstprivate (l)
+    do j = 7, 61, 3
+      l = j
+    end do
+    if (j .ne. 64 .or. l .ne. 61) call abort
+  end subroutine test5
+  subroutine test6
+    integer :: j, l
+    !$omp parallel do lastprivate (j, l) num_threads (4)
+    do j = -10, 11, ret3 ()
+      l = j
+    end do
+    if (j .ne. 14 .or. l .ne. 11) call abort
+  end subroutine test6
+  subroutine test7
+    integer :: i, k
+    common /c/ i, k
+    !$omp parallel do lastprivate (i, k) num_threads (4)
+    do i = 1, 20
+      k = i
+    end do
+    if (i .ne. 21 .or. k .ne. 20) call abort
+  end subroutine test7
+  subroutine test8
+    integer :: i, k
+    common /c/ i, k
+    !$omp parallel do lastprivate (i, k) num_threads (4)
+    do i = 7, 61, 3
+      k = i
+    end do
+    if (i .ne. 64 .or. k .ne. 61) call abort
+  end subroutine test8
+  subroutine test9
+    integer :: i, k
+    common /c/ i, k
+    k = 77
+    !$omp parallel do lastprivate (i, k) num_threads (4) firstprivate (k)
+    do i = -10, 11, ret3 ()
+      k = i
+    end do
+    if (i .ne. 14 .or. k .ne. 11) call abort
+  end subroutine test9
+  subroutine test10
+    integer :: i, k
+    common /c/ i, k
+    !$omp parallel num_threads (4)
+    !$omp do lastprivate (i, k)
+    do i = 1, 20
+      k = i
+    end do
+    !$omp end parallel
+    if (i .ne. 21 .or. k .ne. 20) call abort
+  end subroutine test10
+  subroutine test11
+    integer :: i, k
+    common /c/ i, k
+    !$omp parallel num_threads (4)
+    !$omp do lastprivate (i, k)
+    do i = 7, 61, 3
+      k = i
+    end do
+    !$omp end parallel
+    if (i .ne. 64 .or. k .ne. 61) call abort
+  end subroutine test11
+  subroutine test12
+    integer :: i, k
+    common /c/ i, k
+    k = 77
+    !$omp parallel num_threads (4)
+    !$omp do lastprivate (i, k) firstprivate (k)
+    do i = -10, 11, ret3 ()
+      k = i
+    end do
+    !$omp end parallel
+    if (i .ne. 14 .or. k .ne. 11) call abort
+  end subroutine test12
+end program lastprivate