1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- ! { 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" } }
|