1module m 2implicit none 3integer i, v 4real f 5contains 6subroutine foo (j) 7integer, value :: j 8 !$omp atomic update,update ! { dg-error "Duplicated atomic clause: unexpected update clause" } 9 i = i + 1 10 !$omp atomic seq_cst release ! { dg-error "Duplicated memory-order clause: unexpected release clause" } 11 i = i + 1 12 !$omp atomic read,release ! { dg-error "ATOMIC READ at .1. incompatible with RELEASE clause" } 13 v = i 14 !$omp atomic acquire , write ! { dg-error "ATOMIC WRITE at .1. incompatible with ACQUIRE clause" } 15 i = v 16 !$omp atomic capture hint (0) capture ! { dg-error "Duplicated 'capture' clause" } 17 v = i = i + 1 18 !$omp atomic hint(j + 2) ! { dg-error "Value of HINT clause at .1. shall be a valid constant hint expression" } 19 i = i + 1 20 !$omp atomic hint(f) 21 ! { dg-error "HINT clause at .1. requires a scalar INTEGER expression" "" { target *-*-* } .-1 } 22 ! { dg-error "Value of HINT clause at .1. shall be a valid constant hint expression" "" { target *-*-* } .-2 } 23 i = i + 1 24 !$omp atomic foobar ! { dg-error "Failed to match clause" } 25 i = i + 1 26end 27end module 28