mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			38 lines
		
	
	
		
			750 B
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			750 B
		
	
	
	
		
			Fortran
		
	
	
	
| ! { dg-do run }
 | |
|     integer (kind = 4) :: a, a2
 | |
|     integer (kind = 2) :: b, b2
 | |
|     real :: c
 | |
|     double precision :: d, d2, c2
 | |
|     integer, dimension (10) :: e
 | |
| !$omp atomic write
 | |
|     a = 1
 | |
| !$omp atomic write
 | |
|     b = 2
 | |
| !$omp atomic write
 | |
|     c = 3
 | |
| !$omp atomic write
 | |
|     d = 4
 | |
| !$omp atomic capture
 | |
|     a2 = a
 | |
|     a = a + 4
 | |
| !$omp end atomic
 | |
| !$omp atomic capture
 | |
|     b = b - 18
 | |
|     b2 = b
 | |
| !$omp end atomic
 | |
| !$omp atomic capture
 | |
|     c2 = c
 | |
|     c = 2.0 * c
 | |
| !$omp end atomic
 | |
| !$omp atomic capture
 | |
|     d = d / 2.0
 | |
|     d2 = d
 | |
| !$omp end atomic
 | |
|     if (a2 .ne. 1 .or. b2 .ne. -16 .or. c2 .ne. 3 .or. d2 .ne. 2) call abort
 | |
| !$omp atomic read
 | |
|     a2 = a
 | |
| !$omp atomic read
 | |
|     c2 = c
 | |
|     if (a2 .ne. 5 .or. b2 .ne. -16 .or. c2 .ne. 6 .or. d2 .ne. 2) call abort
 | |
| end
 |