mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Fortran
		
	
	
	
| ! { dg-do run }
 | |
| !$ use omp_lib
 | |
| 
 | |
|   character (len = 8) :: h
 | |
|   character (len = 9) :: i
 | |
|   h = '01234567'
 | |
|   i = 'ABCDEFGHI'
 | |
|   call test (h, i, 9)
 | |
| contains
 | |
|   subroutine test (p, q, n)
 | |
|     character (len = *) :: p
 | |
|     character (len = n) :: q
 | |
|     character (len = n) :: r
 | |
|     character (len = n) :: t
 | |
|     character (len = n) :: u
 | |
|     integer, dimension (n + 4) :: s
 | |
|     logical :: l
 | |
|     integer :: m
 | |
|     r = ''
 | |
|     if (n .gt. 8) r = 'jklmnopqr'
 | |
|     do m = 1, n + 4
 | |
|       s(m) = m
 | |
|     end do
 | |
|     u = 'abc'
 | |
|     l = .false.
 | |
| !$omp parallel firstprivate (p, q, r) private (t, m) reduction (.or.:l) &
 | |
| !$omp & num_threads (2)
 | |
|     do m = 1, 13
 | |
|       if (s(m) .ne. m) l = .true.
 | |
|     end do
 | |
|     m = omp_get_thread_num ()
 | |
|     l = l .or. p .ne. '01234567' .or. q .ne. 'ABCDEFGHI'
 | |
|     l = l .or. r .ne. 'jklmnopqr' .or. u .ne. 'abc'
 | |
| !$omp barrier
 | |
|     if (m .eq. 0) then
 | |
|       p = 'A'
 | |
|       q = 'B'
 | |
|       r = 'C'
 | |
|       t = '123'
 | |
|       u = '987654321'
 | |
|     else if (m .eq. 1) then
 | |
|       p = 'D'
 | |
|       q = 'E'
 | |
|       r = 'F'
 | |
|       t = '456'
 | |
|       s = m
 | |
|     end if
 | |
| !$omp barrier
 | |
|     l = l .or. u .ne. '987654321'
 | |
|     if (any (s .ne. 1)) l = .true.
 | |
|     if (m .eq. 0) then
 | |
|       l = l .or. p .ne. 'A' .or. q .ne. 'B' .or. r .ne. 'C'
 | |
|       l = l .or. t .ne. '123'
 | |
|     else
 | |
|       l = l .or. p .ne. 'D' .or. q .ne. 'E' .or. r .ne. 'F'
 | |
|       l = l .or. t .ne. '456'
 | |
|     end if
 | |
| !$omp end parallel
 | |
|     if (l) call abort
 | |
|   end subroutine test
 | |
| end
 |