36 lines
		
	
	
		
			998 B
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			998 B
		
	
	
	
		
			Fortran
		
	
	
	
| ! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp
 | |
| ! OpenMP Version 4.5
 | |
| ! 2.15.3.5 lastprivate Clause
 | |
| ! A list item that is private within a parallel region, or that appears in
 | |
| ! reduction clause of a parallel construct, must not appear in a
 | |
| ! lastprivate clause on a worksharing construct if any of the corresponding
 | |
| ! worksharing regions ever binds to any of the corresponding parallel regions.
 | |
| 
 | |
| program omp_lastprivate
 | |
|   integer :: a(10), b(10), c(10)
 | |
| 
 | |
|   a = 10
 | |
|   b = 20
 | |
| 
 | |
|   !$omp parallel reduction(+:a)
 | |
|   !ERROR: LASTPRIVATE variable 'a' is PRIVATE in outer context
 | |
|   !$omp sections lastprivate(a, b)
 | |
|   !$omp section
 | |
|   c = a + b
 | |
|   !$omp end sections
 | |
|   !$omp end parallel
 | |
| 
 | |
|   !$omp parallel private(a,b)
 | |
|   !ERROR: LASTPRIVATE variable 'a' is PRIVATE in outer context
 | |
|   !ERROR: LASTPRIVATE variable 'b' is PRIVATE in outer context
 | |
|   !$omp do lastprivate(a,b)
 | |
|   do i = 1, 10
 | |
|     c(i) = a(i) + b(i) + i
 | |
|   end do
 | |
|   !$omp end do
 | |
|   !$omp end parallel
 | |
| 
 | |
|   print *, c
 | |
| 
 | |
| end program omp_lastprivate
 |