1! { dg-do compile } 2! { dg-options "-fcoarray=single -std=f2008ts -fmax-errors=200" } 3! 4use iso_fortran_env, only: atomic_int_kind, atomic_logical_kind 5implicit none 6 7intrinsic :: atomic_define 8intrinsic :: atomic_ref 9intrinsic :: atomic_cas 10intrinsic :: atomic_add 11intrinsic :: atomic_and 12intrinsic :: atomic_or 13intrinsic :: atomic_xor 14intrinsic :: atomic_fetch_add 15intrinsic :: atomic_fetch_and 16intrinsic :: atomic_fetch_or 17intrinsic :: atomic_fetch_xor 18integer(atomic_int_kind) :: caf[*], var 19logical(atomic_logical_kind) :: caf_log[*], var2 20integer :: stat 21integer(1) :: var3, caf0[*] 22logical(1) :: var4, caf0_log[*] 23 24call atomic_define(caf[1], 2_2, stat=stat) 25call atomic_define(atom=caf_log[1], value=.false._2) 26call atomic_define(caf_log[1], 2) ! { dg-error "shall have the same type as 'atom'" } 27call atomic_define(var, 2_2, stat=stat) ! { dg-error "shall be a coarray or coindexed" } 28call atomic_define(caf0, 2_2, stat=stat) ! { dg-error "integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KIND" } 29call atomic_define(var2, 2_2, stat=stat) ! { dg-error "shall be a coarray or coindexed" } 30call atomic_define(caf0_log, 2_2, stat=stat) ! { dg-error "integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KIND" } 31 32call atomic_ref(var3, caf[1], stat=stat) 33call atomic_ref(value=var4, atom=caf_log[1]) 34call atomic_ref(var, caf_log[1]) ! { dg-error "shall have the same type as 'atom'" } 35call atomic_ref(var, var) ! { dg-error "shall be a coarray or coindexed" } 36call atomic_ref(var, caf0) ! { dg-error "integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KIND" } 37call atomic_ref(var, caf0_log) ! { dg-error "integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KIND" } 38 39call atomic_cas(caf[1], var, 2_4, 1_1, stat=stat) 40call atomic_cas(caf[1], var, 2_2, 1_1, stat=stat) ! { dg-error "'compare' argument of 'atomic_cas' intrinsic at .1. must be the same type and kind as 'atom'" } 41call atomic_cas(caf[1], var3, 2_2, 1_1, stat=stat) ! { dg-error "'old' argument of 'atomic_cas' intrinsic at .1. must be the same type and kind as 'atom'" } 42call atomic_cas(caf[1], var3, 2_4, .false._4, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 43call atomic_cas(caf0[1], var, 2_4, 1_1, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KIND" } 44call atomic_cas(var, var, 2_4, 1_1, stat=stat) ! { dg-error "shall be a coarray or coindexed" } 45call atomic_cas(caf_log[1], var2, .true._4, .false._1, stat=stat) 46call atomic_cas(caf_log[1], var2, .true._2, .false._1, stat=stat) ! { dg-error "'compare' argument of 'atomic_cas' intrinsic at .1. must be the same type and kind as 'atom'" } 47call atomic_cas(caf_log[1], var4, .true._4, .false._1, stat=stat) ! { dg-error "'old' argument of 'atomic_cas' intrinsic at .1. must be the same type and kind as 'atom'" } 48call atomic_cas(caf_log[1], var4, .true._4, 4_4, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 49call atomic_cas(atom=caf0_log[1], old=var4, compare=.true._4, new=.false._4, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND or a logical of ATOMIC_LOGICAL_KIND" } 50call atomic_cas(var2, var4, .true._4, .false._4, stat=stat) ! { dg-error "shall be a coarray or coindexed" } 51call atomic_cas(caf[1], var, 2_4, 1_1, stat=var3) ! { dg-error "'stat' argument of 'atomic_cas' intrinsic at .1. must be of kind 4" } 52 53call atomic_add(atom=caf, value=2_4, stat=stat) 54call atomic_add(caf, 2_2, stat=stat) 55call atomic_add(caf, .false._2, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 56call atomic_add(caf_log, .false._2, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND" } 57call atomic_add(var, 34._4) ! { dg-error "shall be a coarray or coindexed" } 58call atomic_add(atom=caf, value=2_4, stat=var3) ! { dg-error "'stat' argument of 'atomic_add' intrinsic at .1. must be of kind 4" } 59 60call atomic_and(caf, 2_4, stat=stat) 61call atomic_and(atom=caf, value=2_2, stat=stat) 62call atomic_and(caf, .false._2, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 63call atomic_and(caf_log, .false._2, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND" } 64call atomic_and(var, 34._4) ! { dg-error "shall be a coarray or coindexed" } 65call atomic_and(caf, 2_4, stat=var3) ! { dg-error "'stat' argument of 'atomic_and' intrinsic at .1. must be of kind 4" } 66 67call atomic_or(caf, value=2_4, stat=stat) 68call atomic_or(atom=caf, value=2_2, stat=stat) 69call atomic_or(caf, .false._2, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 70call atomic_or(caf_log, .false._2, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND" } 71call atomic_or(var, 34._4) ! { dg-error "shall be a coarray or coindexed" } 72call atomic_or(caf, value=2_4, stat=var3) ! { dg-error "'stat' argument of 'atomic_or' intrinsic at .1. must be of kind 4" } 73 74call atomic_xor(caf, 2_4, stat=stat) 75call atomic_xor(atom=caf, value=2_2, stat=stat) 76call atomic_xor(caf, .false._2, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 77call atomic_xor(caf_log, .false._2, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND" } 78call atomic_xor(var, 34._4) ! { dg-error "shall be a coarray or coindexed" } 79call atomic_xor(caf, 2_4, stat=var3) ! { dg-error "'stat' argument of 'atomic_xor' intrinsic at .1. must be of kind 4" } 80 81call atomic_fetch_add(atom=caf, value=2_4, old=var, stat=stat) 82call atomic_fetch_add(caf, 2_2, var) 83call atomic_fetch_add(caf, .false._2, var, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 84call atomic_fetch_add(caf_log, .false._2, var2, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND" } 85call atomic_fetch_add(var, 34._4, var) ! { dg-error "shall be a coarray or coindexed" } 86call atomic_fetch_add(caf, 2_2, var3) ! { dg-error "must be the same type and kind as 'atom'" } 87call atomic_fetch_add(atom=caf, value=2_4, old=var, stat=var3) ! { dg-error "'stat' argument of 'atomic_fetch_add' intrinsic at .1. must be of kind 4" } 88 89call atomic_fetch_and(atom=caf, value=2_4, old=var, stat=stat) 90call atomic_fetch_and(caf, 2_2, var) 91call atomic_fetch_and(caf, .false._2, var, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 92call atomic_fetch_and(caf_log, .false._2, var2, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND" } 93call atomic_fetch_and(var, 34._4, var) ! { dg-error "shall be a coarray or coindexed" } 94call atomic_fetch_and(caf, 2_2, var3) ! { dg-error "must be the same type and kind as 'atom'" } 95call atomic_fetch_and(atom=caf, value=2_4, old=var, stat=var3) ! { dg-error "'stat' argument of 'atomic_fetch_and' intrinsic at .1. must be of kind 4" } 96 97call atomic_fetch_or(atom=caf, value=2_4, old=var, stat=stat) 98call atomic_fetch_or(caf, 2_2, var) 99call atomic_fetch_or(caf, .false._2, var, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 100call atomic_fetch_or(caf_log, .false._2, var2, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND" } 101call atomic_fetch_or(var, 34._4, var) ! { dg-error "shall be a coarray or coindexed" } 102call atomic_fetch_or(caf, 2_2, var3) ! { dg-error "must be the same type and kind as 'atom'" } 103call atomic_fetch_or(atom=caf, value=2_4, old=var, stat=var3) ! { dg-error "'stat' argument of 'atomic_fetch_or' intrinsic at .1. must be of kind 4" } 104 105call atomic_fetch_xor(atom=caf, value=2_4, old=var, stat=stat) 106call atomic_fetch_xor(caf, 2_2, var) 107call atomic_fetch_xor(caf, .false._2, var, stat=stat) ! { dg-error "shall have the same type as 'atom'" } 108call atomic_fetch_xor(caf_log, .false._2, var2, stat=stat) ! { dg-error "shall be an integer of ATOMIC_INT_KIND" } 109call atomic_fetch_xor(var, 34._4, var) ! { dg-error "shall be a coarray or coindexed" } 110call atomic_fetch_xor(caf, 2_2, var3) ! { dg-error "must be the same type and kind as 'atom'" } 111call atomic_fetch_xor(atom=caf, value=2_4, old=var, stat=var3) ! { dg-error "'stat' argument of 'atomic_fetch_xor' intrinsic at .1. must be of kind 4" } 112end 113