1e4ee56b4SKatherine Rasmussen! RUN: %python %S/test_errors.py %s %flang_fc1 2e4ee56b4SKatherine Rasmussen! This test checks for semantic errors in atomic_fetch_and subroutine calls based on 3e4ee56b4SKatherine Rasmussen! the interface defined in section 16.9.25 of the Fortran 2018 standard. 4e4ee56b4SKatherine Rasmussen 5e4ee56b4SKatherine Rasmussenprogram test_atomic_fetch_and 634f3fa1aSKatherine Rasmussen use iso_fortran_env, only: atomic_int_kind, atomic_logical_kind 7*512b44d5SPeter Klausler implicit none(external, type) 8e4ee56b4SKatherine Rasmussen 9e4ee56b4SKatherine Rasmussen integer(kind=atomic_int_kind) :: scalar_coarray[*], non_scalar_coarray(10)[*], val, old_val, non_coarray 10e4ee56b4SKatherine Rasmussen integer(kind=atomic_int_kind) :: repeated_atom[*], repeated_old, repeated_val, array(10) 1134f3fa1aSKatherine Rasmussen integer :: status, default_kind_coarray[*], not_same_kind_as_atom, coindexed_status[*] 1234f3fa1aSKatherine Rasmussen integer :: extra_arg, repeated_status, status_array(10) 13e4ee56b4SKatherine Rasmussen integer(kind=1) :: kind1_coarray[*] 14e4ee56b4SKatherine Rasmussen real :: non_integer_coarray[*], not_same_type_as_atom 15e4ee56b4SKatherine Rasmussen logical :: non_integer 1634f3fa1aSKatherine Rasmussen logical(kind=atomic_logical_kind) :: atomic_logical[*], old_logical 17e4ee56b4SKatherine Rasmussen 18e4ee56b4SKatherine Rasmussen !___ standard-conforming calls ___ 19e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val) 20e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray[1], val, old_val) 21e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val, status) 22e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray[1], val, old_val, status) 23e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, value=val, old=old_val, stat=status) 24e4ee56b4SKatherine Rasmussen call atomic_fetch_and(stat=status, old=old_val, value=val, atom=scalar_coarray) 25e4ee56b4SKatherine Rasmussen 26e4ee56b4SKatherine Rasmussen !___ non-standard-conforming calls ___ 27e4ee56b4SKatherine Rasmussen 2834f3fa1aSKatherine Rasmussen !ERROR: Actual argument for 'atom=' has bad type 'LOGICAL(8)' 2934f3fa1aSKatherine Rasmussen call atomic_fetch_and(atomic_logical, val, old_logical) 3034f3fa1aSKatherine Rasmussen 3134f3fa1aSKatherine Rasmussen !ERROR: Actual argument for 'old=' has bad type 'LOGICAL(8)' 3234f3fa1aSKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_logical) 3334f3fa1aSKatherine Rasmussen 3434f3fa1aSKatherine Rasmussen !ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_fetch_and' 35e4ee56b4SKatherine Rasmussen call atomic_fetch_and(non_scalar_coarray, val, old_val) 36e4ee56b4SKatherine Rasmussen 3734f3fa1aSKatherine Rasmussen !ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_fetch_and' 38e4ee56b4SKatherine Rasmussen call atomic_fetch_and(non_coarray, val, old_val) 39e4ee56b4SKatherine Rasmussen 4034f3fa1aSKatherine Rasmussen !ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_fetch_and' 41e4ee56b4SKatherine Rasmussen call atomic_fetch_and(array, val, old_val) 42e4ee56b4SKatherine Rasmussen 4334f3fa1aSKatherine Rasmussen !ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_fetch_and' 4434f3fa1aSKatherine Rasmussen call atomic_fetch_and(non_scalar_coarray[1], val, old_val) 4534f3fa1aSKatherine Rasmussen 46e4ee56b4SKatherine Rasmussen !ERROR: Actual argument for 'atom=' must have kind=atomic_int_kind, but is 'INTEGER(4)' 47e4ee56b4SKatherine Rasmussen call atomic_fetch_and(default_kind_coarray, val, old_val) 48e4ee56b4SKatherine Rasmussen 49e4ee56b4SKatherine Rasmussen !ERROR: Actual argument for 'atom=' must have kind=atomic_int_kind, but is 'INTEGER(1)' 50e4ee56b4SKatherine Rasmussen call atomic_fetch_and(kind1_coarray, val, old_val) 51e4ee56b4SKatherine Rasmussen 52e4ee56b4SKatherine Rasmussen !ERROR: Actual argument for 'atom=' has bad type 'REAL(4)' 53e4ee56b4SKatherine Rasmussen call atomic_fetch_and(non_integer_coarray, val, old_val) 54e4ee56b4SKatherine Rasmussen 55e4ee56b4SKatherine Rasmussen !ERROR: 'value=' argument has unacceptable rank 1 56e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, array, old_val) 57e4ee56b4SKatherine Rasmussen 58e4ee56b4SKatherine Rasmussen !ERROR: Actual argument for 'value=' has bad type 'LOGICAL(4)' 59e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, non_integer, old_val) 60e4ee56b4SKatherine Rasmussen 61e4ee56b4SKatherine Rasmussen !ERROR: Actual argument for 'old=' must have kind=atomic_int_kind, but is 'INTEGER(4)' 62e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, value=val, old=not_same_kind_as_atom) 63e4ee56b4SKatherine Rasmussen 64e4ee56b4SKatherine Rasmussen !ERROR: Actual argument for 'old=' has bad type 'REAL(4)' 65e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, value=val, old=not_same_type_as_atom) 66e4ee56b4SKatherine Rasmussen 67e4ee56b4SKatherine Rasmussen !ERROR: Actual argument for 'old=' must have kind=atomic_int_kind, but is 'INTEGER(4)' 68e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, 1) 69e4ee56b4SKatherine Rasmussen 70e4ee56b4SKatherine Rasmussen !ERROR: 'old=' argument has unacceptable rank 1 71e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, array) 72e4ee56b4SKatherine Rasmussen 73e4ee56b4SKatherine Rasmussen !ERROR: Actual argument for 'stat=' has bad type 'LOGICAL(4)' 74e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val, non_integer) 75e4ee56b4SKatherine Rasmussen 76e4ee56b4SKatherine Rasmussen !ERROR: 'stat=' argument has unacceptable rank 1 77e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val, status_array) 78e4ee56b4SKatherine Rasmussen 7934f3fa1aSKatherine Rasmussen !ERROR: 'stat' argument to 'atomic_fetch_and' may not be a coindexed object 80e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val, coindexed_status[1]) 81e4ee56b4SKatherine Rasmussen 82573fc618SPeter Klausler !ERROR: Actual argument associated with INTENT(OUT) dummy argument 'stat=' is not definable 83573fc618SPeter Klausler !BECAUSE: '1_4' is not a variable or pointer 84e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val, 1) 85e4ee56b4SKatherine Rasmussen 86e4ee56b4SKatherine Rasmussen !ERROR: missing mandatory 'atom=' argument 87e4ee56b4SKatherine Rasmussen call atomic_fetch_and() 88e4ee56b4SKatherine Rasmussen 89e4ee56b4SKatherine Rasmussen !ERROR: missing mandatory 'atom=' argument 90e4ee56b4SKatherine Rasmussen call atomic_fetch_and(value=val, old=old_val, stat=status) 91e4ee56b4SKatherine Rasmussen 92e4ee56b4SKatherine Rasmussen !ERROR: missing mandatory 'value=' argument 93e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray) 94e4ee56b4SKatherine Rasmussen 95e4ee56b4SKatherine Rasmussen !ERROR: missing mandatory 'value=' argument 96e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, old=old_val, stat=status) 97e4ee56b4SKatherine Rasmussen 98e4ee56b4SKatherine Rasmussen !ERROR: missing mandatory 'old=' argument 99e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val) 100e4ee56b4SKatherine Rasmussen 101e4ee56b4SKatherine Rasmussen !ERROR: missing mandatory 'old=' argument 102e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, value=val) 103e4ee56b4SKatherine Rasmussen 104e4ee56b4SKatherine Rasmussen !ERROR: too many actual arguments for intrinsic 'atomic_fetch_and' 105e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val, status, extra_arg) 106e4ee56b4SKatherine Rasmussen 107e4ee56b4SKatherine Rasmussen !ERROR: repeated keyword argument to intrinsic 'atomic_fetch_and' 108e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, atom=repeated_atom, value=val, old=old_val, stat=status) 109e4ee56b4SKatherine Rasmussen 110e4ee56b4SKatherine Rasmussen !ERROR: repeated keyword argument to intrinsic 'atomic_fetch_and' 111e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, value=val, value=repeated_val, old=old_val, stat=status) 112e4ee56b4SKatherine Rasmussen 113e4ee56b4SKatherine Rasmussen !ERROR: repeated keyword argument to intrinsic 'atomic_fetch_and' 114e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, value=val, old=old_val, old=repeated_old, stat=status) 115e4ee56b4SKatherine Rasmussen 116e4ee56b4SKatherine Rasmussen !ERROR: repeated keyword argument to intrinsic 'atomic_fetch_and' 117e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, value=val, old=old_val, stat=status, stat=repeated_status) 118e4ee56b4SKatherine Rasmussen 119e4ee56b4SKatherine Rasmussen !ERROR: unknown keyword argument to intrinsic 'atomic_fetch_and' 120e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atomic=scalar_coarray, value=val, old=old_val, stat=status) 121e4ee56b4SKatherine Rasmussen 122e4ee56b4SKatherine Rasmussen !ERROR: unknown keyword argument to intrinsic 'atomic_fetch_and' 123e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, values=val, old=old_val, stat=status) 124e4ee56b4SKatherine Rasmussen 125e4ee56b4SKatherine Rasmussen !ERROR: unknown keyword argument to intrinsic 'atomic_fetch_and' 126e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, value=val, oldvalue=old_val, stat=status) 127e4ee56b4SKatherine Rasmussen 128e4ee56b4SKatherine Rasmussen !ERROR: unknown keyword argument to intrinsic 'atomic_fetch_and' 129e4ee56b4SKatherine Rasmussen call atomic_fetch_and(atom=scalar_coarray, value=val, old=old_val, status=status) 130e4ee56b4SKatherine Rasmussen 131e4ee56b4SKatherine Rasmussen !ERROR: keyword argument to intrinsic 'atomic_fetch_and' was supplied positionally by an earlier actual argument 132e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val, atom=repeated_atom) 133e4ee56b4SKatherine Rasmussen 134e4ee56b4SKatherine Rasmussen !ERROR: keyword argument to intrinsic 'atomic_fetch_and' was supplied positionally by an earlier actual argument 135e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val, value=repeated_val) 136e4ee56b4SKatherine Rasmussen 137e4ee56b4SKatherine Rasmussen !ERROR: keyword argument to intrinsic 'atomic_fetch_and' was supplied positionally by an earlier actual argument 138e4ee56b4SKatherine Rasmussen call atomic_fetch_and(scalar_coarray, val, old_val, status, stat=repeated_status) 139e4ee56b4SKatherine Rasmussen 140e4ee56b4SKatherine Rasmussenend program test_atomic_fetch_and 141