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