mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			679 B
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			679 B
		
	
	
	
		
			Fortran
		
	
	
	
| ! PR fortran/27395
 | |
| ! { dg-do run }
 | |
| 
 | |
| program pr27395_1
 | |
|   implicit none
 | |
|   integer, parameter :: n=10,m=1001
 | |
|   integer :: i
 | |
|   integer, dimension(n) :: sumarray
 | |
|   call foo(n,m,sumarray)
 | |
|   do i=1,n
 | |
|     if (sumarray(i).ne.m*i) call abort
 | |
|   end do
 | |
| end program pr27395_1
 | |
| 
 | |
| subroutine foo(n,m,sumarray)
 | |
|   use omp_lib, only : omp_get_thread_num
 | |
|   implicit none
 | |
|   integer, intent(in) :: n,m
 | |
|   integer, dimension(n), intent(out) :: sumarray
 | |
|   integer :: i,j
 | |
|   sumarray(:)=0
 | |
| !$OMP PARALLEL DEFAULT(shared) NUM_THREADS(4)
 | |
| !$OMP DO PRIVATE(j,i), REDUCTION(+:sumarray)
 | |
|   do j=1,m
 | |
|     do i=1,n
 | |
|       sumarray(i)=sumarray(i)+i
 | |
|     end do
 | |
|   end do
 | |
| !$OMP END DO
 | |
| !$OMP END PARALLEL
 | |
| end subroutine foo
 |