brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · cf3804b Raw
110 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc12! This test checks for semantic errors in atomic_add() subroutine based on the3! statement specification in section 16.9.20 of the Fortran 2018 standard.4 5program test_atomic_add6  use iso_fortran_env, only : atomic_int_kind7  implicit none(external, type)8 9  integer(kind=atomic_int_kind) atom_object[*], atom_array(2)[*], quantity, array(1), coarray[*], non_coarray10  integer non_atom_object[*], non_scalar(1), status, stat_array(1), coindexed[*]11  logical non_integer12 13  !___ standard-conforming calls with required arguments _______14 15  call atomic_add(atom_object, quantity)16  call atomic_add(atom_object[1], quantity)17  call atomic_add(atom_array(1), quantity)18  call atomic_add(atom_array(1)[1], quantity)19  call atomic_add(atom_object, array(1))20  call atomic_add(atom_object, coarray[1])21  call atomic_add(atom=atom_object, value=quantity)22  call atomic_add(value=quantity, atom=atom_object)23 24  !___ standard-conforming calls with all arguments ____________25  call atomic_add(atom_object, quantity, status)26  call atomic_add(atom_object, quantity, stat_array(1))27  call atomic_add(atom=atom_object, value=quantity, stat=status)28  call atomic_add(stat=status, value=quantity, atom=atom_object)29 30  !___ non-standard-conforming calls _______31 32  ! atom must be of kind atomic_int_kind33  ! ERROR: Actual argument for 'atom=' must have kind=atomic_int_kind, but is 'INTEGER(4)'34  call atomic_add(non_atom_object, quantity)35 36  ! atom must be a coarray37  ! ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_add'38  call atomic_add(non_coarray, quantity)39 40  ! atom must be a scalar variable41  ! ERROR: 'atom=' argument must be a scalar coarray or coindexed object for intrinsic 'atomic_add'42  call atomic_add(atom_array, quantity)43 44  ! atom has an unknown keyword argument45  ! ERROR: unknown keyword argument to intrinsic 'atomic_add'46  call atomic_add(atoms=atom_object, value=quantity)47 48  ! atom has an argument mismatch49  ! ERROR: Actual argument for 'atom=' must have kind=atomic_int_kind, but is 'INTEGER(4)'50  call atomic_add(atom=non_atom_object, value=quantity)51 52  ! value must be an integer53  ! ERROR: Actual argument for 'value=' has bad type 'LOGICAL(4)'54  call atomic_add(atom_object, non_integer)55 56  ! value must be an integer scalar57  ! ERROR: 'value=' argument has unacceptable rank 158  call atomic_add(atom_object, array)59 60  ! value has an unknown keyword argument61  ! ERROR: unknown keyword argument to intrinsic 'atomic_add'62  call atomic_add(atom_object, values=quantity)63 64  ! value has an argument mismatch65  ! ERROR: Actual argument for 'value=' has bad type 'LOGICAL(4)'66  call atomic_add(atom_object, value=non_integer)67 68  ! stat must be an integer69  ! ERROR: Actual argument for 'stat=' has bad type 'LOGICAL(4)'70  call atomic_add(atom_object, quantity, non_integer)71 72  ! stat must be an integer scalar73  ! ERROR: 'stat=' argument has unacceptable rank 174  call atomic_add(atom_object, quantity, non_scalar)75 76  ! stat is an intent(out) argument77  ! ERROR: Actual argument associated with INTENT(OUT) dummy argument 'stat=' is not definable78  ! ERROR: '8_4' is not a variable or pointer79  call atomic_add(atom_object, quantity, 8)80 81  ! stat has an unknown keyword argument82  ! ERROR: unknown keyword argument to intrinsic 'atomic_add'83  call atomic_add(atom_object, quantity, statuses=status)84 85  ! stat has an argument mismatch86  ! ERROR: Actual argument for 'stat=' has bad type 'LOGICAL(4)'87  call atomic_add(atom_object, quantity, stat=non_integer)88 89  ! stat must not be coindexed90  ! ERROR: 'stat' argument to 'atomic_add' may not be a coindexed object91  call atomic_add(atom_object, quantity, coindexed[1])92 93  ! Too many arguments94  ! ERROR: too many actual arguments for intrinsic 'atomic_add'95  call atomic_add(atom_object, quantity, status, stat_array(1))96 97  ! Repeated atom keyword98  ! ERROR: repeated keyword argument to intrinsic 'atomic_add'99  call atomic_add(atom=atom_object, atom=atom_array(1), value=quantity)100 101  ! Repeated value keyword102  ! ERROR: repeated keyword argument to intrinsic 'atomic_add'103  call atomic_add(atom=atom_object, value=quantity, value=array(1))104 105  ! Repeated stat keyword106  ! ERROR: repeated keyword argument to intrinsic 'atomic_add'107  call atomic_add(atom=atom_object, value=quantity, stat=status, stat=stat_array(1))108 109end program test_atomic_add110