! { dg-do compile } subroutine test_atomic integer (kind = 4) :: a integer :: b real :: c, f double precision :: d integer, dimension (10) :: e a = 1 b = 2 c = 3 d = 4 e = 5 f = 6 !$omp atomic a = a + 4 !$omp atomic b = 4 - b !$omp atomic c = c * 2 !$omp atomic d = 2 / d !$omp atomic e = 1 ! { dg-error "must set a scalar variable" } !$omp atomic a = a ** 8 ! { dg-error "assignment operator must be" } !$omp atomic b = b + 3 + b ! { dg-error "cannot reference" } !$omp atomic c = c - f + 1 ! { dg-error "not mathematically equivalent to" } !$omp atomic a = ishft (a, 1) ! { dg-error "assignment intrinsic must be" } !$omp atomic c = min (c, 2.1, c) ! { dg-error "intrinsic arguments except one" } !$omp atomic a = max (b, e(1)) ! { dg-error "intrinsic argument must be 'a'" } !$omp atomic d = 12 ! { dg-error "assignment must have an operator" } end subroutine test_atomic