mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			778 B
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			778 B
		
	
	
	
		
			Fortran
		
	
	
	
| program foo
 | |
|   integer :: i, j, k
 | |
|   integer :: a(10), c(10)
 | |
|   k = 2
 | |
|   a(:) = 0
 | |
|   call test1
 | |
|   call test2
 | |
|   do i = 1, 10
 | |
|     if (a(i) .ne. 10 * i) call abort
 | |
|   end do
 | |
|   !$omp parallel do reduction (+:c)
 | |
|   do i = 1, 10
 | |
|     c = c + a
 | |
|   end do
 | |
|   do i = 1, 10
 | |
|     if (c(i) .ne. 10 * a(i)) call abort
 | |
|   end do
 | |
|   !$omp parallel do lastprivate (j)
 | |
|   do j = 1, 10, k
 | |
|   end do
 | |
|   if (j .ne. 11) call abort
 | |
| contains
 | |
|   subroutine test1
 | |
|     integer :: i
 | |
|     integer :: b(10)
 | |
|     do i = 1, 10
 | |
|       b(i) = i
 | |
|     end do
 | |
|     c(:) = 0
 | |
|     !$omp parallel do reduction (+:a)
 | |
|     do i = 1, 10
 | |
|       a = a + b
 | |
|     end do
 | |
|   end subroutine test1
 | |
|   subroutine test2
 | |
|     !$omp parallel do lastprivate (j)
 | |
|     do j = 1, 10, k
 | |
|     end do
 | |
|     if (j .ne. 11) call abort
 | |
|   end subroutine test2
 | |
| end program foo
 |