mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			44 lines
		
	
	
		
			984 B
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			984 B
		
	
	
	
		
			Fortran
		
	
	
	
| ! { dg-do run }
 | |
| 
 | |
| module reduction5
 | |
|   intrinsic ior, min, max
 | |
| end module reduction5
 | |
| 
 | |
|   call test1
 | |
|   call test2
 | |
| contains
 | |
|   subroutine test1
 | |
|     use reduction5, bitwise_or => ior
 | |
|     integer :: n
 | |
|     n = Z'f'
 | |
| !$omp parallel sections num_threads (3) reduction (bitwise_or: n)
 | |
|     n = ior (n, Z'20')
 | |
| !$omp section
 | |
|     n = bitwise_or (Z'410', n)
 | |
| !$omp section
 | |
|     n = bitwise_or (n, Z'2000')
 | |
| !$omp end parallel sections
 | |
|     if (n .ne. Z'243f') call abort
 | |
|   end subroutine
 | |
|   subroutine test2
 | |
|     use reduction5, min => max, max => min
 | |
|     integer :: m, n
 | |
|     m = 8
 | |
|     n = 4
 | |
| !$omp parallel sections num_threads (3) reduction (min: n) &
 | |
| !$omp & reduction (max: m)
 | |
|     if (m .gt. 13) m = 13
 | |
|     if (n .lt. 11) n = 11
 | |
| !$omp section
 | |
|     if (m .gt. 5) m = 5
 | |
|     if (n .lt. 15) n = 15
 | |
| !$omp section
 | |
|     if (m .gt. 3) m = 3
 | |
|     if (n .lt. -1) n = -1
 | |
| !$omp end parallel sections
 | |
|     if (m .ne. 3 .or. n .ne. 15) call abort
 | |
|   end subroutine test2
 | |
| end
 | |
| 
 | |
| ! { dg-final { cleanup-modules "reduction5" } }
 |