mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			142 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Fortran
		
	
	
	
| 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
 |