mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			127 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Fortran
		
	
	
	
| program lastprivate
 | |
|   integer :: i
 | |
|   common /c/ i
 | |
|   !$omp parallel num_threads (4)
 | |
|   call test1
 | |
|   !$omp end parallel
 | |
|   if (i .ne. 21) call abort
 | |
|   !$omp parallel num_threads (4)
 | |
|   call test2
 | |
|   !$omp end parallel
 | |
|   if (i .ne. 64) call abort
 | |
|   !$omp parallel num_threads (4)
 | |
|   call test3
 | |
|   !$omp end parallel
 | |
|   if (i .ne. 14) 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
 | |
|     common /c/ i
 | |
|     !$omp do lastprivate (i)
 | |
|     do i = 1, 20
 | |
|     end do
 | |
|   end subroutine test1
 | |
|   subroutine test2
 | |
|     integer :: i
 | |
|     common /c/ i
 | |
|     !$omp do lastprivate (i)
 | |
|     do i = 7, 61, 3
 | |
|     end do
 | |
|   end subroutine test2
 | |
|   function ret3 ()
 | |
|     integer :: ret3
 | |
|     ret3 = 3
 | |
|   end function ret3
 | |
|   subroutine test3
 | |
|     integer :: i
 | |
|     common /c/ i
 | |
|     !$omp do lastprivate (i)
 | |
|     do i = -10, 11, ret3 ()
 | |
|     end do
 | |
|   end subroutine test3
 | |
|   subroutine test4
 | |
|     integer :: j
 | |
|     !$omp parallel do lastprivate (j) num_threads (4) default (none)
 | |
|     do j = 1, 20
 | |
|     end do
 | |
|     if (j .ne. 21) call abort
 | |
|   end subroutine test4
 | |
|   subroutine test5
 | |
|     integer :: j
 | |
|     !$omp parallel do lastprivate (j) num_threads (4) default (none)
 | |
|     do j = 7, 61, 3
 | |
|     end do
 | |
|     if (j .ne. 64) call abort
 | |
|   end subroutine test5
 | |
|   subroutine test6
 | |
|     integer :: j
 | |
|     !$omp parallel do lastprivate (j) num_threads (4) default (none)
 | |
|     do j = -10, 11, ret3 ()
 | |
|     end do
 | |
|     if (j .ne. 14) call abort
 | |
|   end subroutine test6
 | |
|   subroutine test7
 | |
|     integer :: i
 | |
|     common /c/ i
 | |
|     !$omp parallel do lastprivate (i) num_threads (4) default (none)
 | |
|     do i = 1, 20
 | |
|     end do
 | |
|     if (i .ne. 21) call abort
 | |
|   end subroutine test7
 | |
|   subroutine test8
 | |
|     integer :: i
 | |
|     common /c/ i
 | |
|     !$omp parallel do lastprivate (i) num_threads (4) default (none)
 | |
|     do i = 7, 61, 3
 | |
|     end do
 | |
|     if (i .ne. 64) call abort
 | |
|   end subroutine test8
 | |
|   subroutine test9
 | |
|     integer :: i
 | |
|     common /c/ i
 | |
|     !$omp parallel do lastprivate (i) num_threads (4) default (none)
 | |
|     do i = -10, 11, ret3 ()
 | |
|     end do
 | |
|     if (i .ne. 14) call abort
 | |
|   end subroutine test9
 | |
|   subroutine test10
 | |
|     integer :: i
 | |
|     common /c/ i
 | |
|     !$omp parallel num_threads (4) default (none) shared (i)
 | |
|     !$omp do lastprivate (i)
 | |
|     do i = 1, 20
 | |
|     end do
 | |
|     !$omp end parallel
 | |
|     if (i .ne. 21) call abort
 | |
|   end subroutine test10
 | |
|   subroutine test11
 | |
|     integer :: i
 | |
|     common /c/ i
 | |
|     !$omp parallel num_threads (4) default (none) shared (i)
 | |
|     !$omp do lastprivate (i)
 | |
|     do i = 7, 61, 3
 | |
|     end do
 | |
|     !$omp end parallel
 | |
|     if (i .ne. 64) call abort
 | |
|   end subroutine test11
 | |
|   subroutine test12
 | |
|     integer :: i
 | |
|     common /c/ i
 | |
|     !$omp parallel num_threads (4) default (none) shared (i)
 | |
|     !$omp do lastprivate (i)
 | |
|     do i = -10, 11, ret3 ()
 | |
|     end do
 | |
|     !$omp end parallel
 | |
|     if (i .ne. 14) call abort
 | |
|   end subroutine test12
 | |
| end program lastprivate
 |