aarch64: Add missing ACLE macro for NEON-SVE Bridge
[official-gcc.git] / gcc / testsuite / gfortran.dg / bind_c_char_8.f90
blob8e6413d0bf4948228ee3d4122f26394f9db4c696
1 ! { dg-do compile }
2 ! { dg-additional-options "-fimplicit-none" }
4 ! F2018 only permittes len=*, len=: or len=<const> as dummy argument
5 ! but not len=<non-const-expr>
6 ! Additionally, for allocatable/pointer, len=: is required.
8 ! Scalar, nonallocatable/nonpointer
10 subroutine val_s1(x1) bind(C)
11 character(len=1), value :: x1
12 end
14 subroutine val_s2(x2) bind(C) ! { dg-error "Character dummy argument 'x2' at .1. must be of length 1 as it has the VALUE attribute" }
15 character(len=2), value :: x2
16 end
18 subroutine s1 (x1) bind(C)
19 character(len=1) :: x1
20 end
22 subroutine s2 (x2) bind(C) ! { dg-error "Character dummy argument 'x2' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 's2' has the BIND\\(C\\) attribute" }
23 character(len=2) :: x2
24 end
26 subroutine s3 (xn, n) bind(C) ! { dg-error "Character dummy argument 'xn' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 's3' has the BIND\\(C\\) attribute" }
27 integer :: n
28 character(len=n) :: xn
29 end
31 subroutine s4 (xstar) bind(C)
32 character(len=*) :: xstar
33 end
35 ! Assumed-shape array, nonallocatable/nonpointer
37 subroutine as1 (x1) bind(C)
38 character(len=1) :: x1(:)
39 end
41 subroutine as2 (x2) bind(C)
42 character(len=2) :: x2(:,:)
43 end
45 subroutine as3 (xn, n) bind(C)
46 integer :: n
47 character(len=n) :: xn(:,:,:)
48 end
50 subroutine as4 (xstar) bind(C)
51 character(len=*) :: xstar(:,:,:,:)
52 end
54 ! Assumed-rank array, nonallocatable/nonpointer
56 subroutine ar1 (x1) bind(C)
57 character(len=1) :: x1(..)
58 end
60 subroutine ar2 (x2) bind(C)
61 character(len=2) :: x2(..)
62 end
64 subroutine ar3 (xn, n) bind(C)
65 integer :: n
66 character(len=n) :: xn(..)
67 end
69 subroutine ar4 (xstar) bind(C)
70 character(len=*) :: xstar(..)
71 end
73 ! Assumed-size array, nonallocatable/nonpointer
75 subroutine az1 (x1) bind(C)
76 character(len=1) :: x1(*)
77 end
79 subroutine az2 (x2) bind(C) ! { dg-error "Character dummy argument 'x2' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 'az2' has the BIND\\(C\\) attribute" }
80 character(len=2) :: x2(*)
81 end
83 subroutine az3 (xn, n) bind(C) ! { dg-error "Character dummy argument 'xn' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 'az3' has the BIND\\(C\\) attribute" }
84 integer :: n
85 character(len=n) :: xn(*)
86 end
88 subroutine az4 (xstar) bind(C)
89 character(len=*) :: xstar(*)
90 end
92 ! Explicit-size array, nonallocatable/nonpointer
94 subroutine ae1 (x1) bind(C)
95 character(len=1) :: x1(5)
96 end
98 subroutine ae2 (x2) bind(C) ! { dg-error "Character dummy argument 'x2' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 'ae2' has the BIND\\(C\\) attribute" }
99 character(len=2) :: x2(7)
102 subroutine ae3 (xn, n) bind(C) ! { dg-error "Character dummy argument 'xn' at .1. must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure 'ae3' has the BIND\\(C\\) attribute" }
103 integer :: n
104 character(len=n) :: xn(9)
107 subroutine ae4 (xstar) bind(C)
108 character(len=*) :: xstar(3)
111 ! ALLOCATABLE
112 ! Scalar, allocatable
114 subroutine s1a (x1) bind(C) ! { dg-error "Allocatable character dummy argument 'x1' at .1. must have deferred length as procedure 's1a' is BIND\\(C\\)" }
115 character(len=1), allocatable :: x1
118 subroutine s2a (x2) bind(C) ! { dg-error "Allocatable character dummy argument 'x2' at .1. must have deferred length as procedure 's2a' is BIND\\(C\\)" }
119 character(len=2), allocatable :: x2
122 subroutine s3a (xn, n) bind(C) ! { dg-error "Allocatable character dummy argument 'xn' at .1. must have deferred length as procedure 's3a' is BIND\\(C\\)" }
123 integer :: n
124 character(len=n), allocatable :: xn
127 subroutine s4a (xstar) bind(C) ! { dg-error "Allocatable character dummy argument 'xstar' at .1. must have deferred length as procedure 's4a' is BIND\\(C\\)" }
128 character(len=*), allocatable :: xstar
131 subroutine s5a (xcolon) bind(C)
132 character(len=:), allocatable :: xcolon
135 ! Assumed-shape array, allocatable
137 subroutine a1a (x1) bind(C) ! { dg-error "Allocatable character dummy argument 'x1' at .1. must have deferred length as procedure 'a1a' is BIND\\(C\\)" }
138 character(len=1), allocatable :: x1(:)
141 subroutine a2a (x2) bind(C) ! { dg-error "Allocatable character dummy argument 'x2' at .1. must have deferred length as procedure 'a2a' is BIND\\(C\\)" }
142 character(len=2), allocatable :: x2(:,:)
145 subroutine a3a (xn, n) bind(C) ! { dg-error "Allocatable character dummy argument 'xn' at .1. must have deferred length as procedure 'a3a' is BIND\\(C\\)" }
146 integer :: n
147 character(len=n), allocatable :: xn(:,:,:)
150 subroutine a4a (xstar) bind(C) ! { dg-error "Allocatable character dummy argument 'xstar' at .1. must have deferred length as procedure 'a4a' is BIND\\(C\\)" }
151 character(len=*), allocatable :: xstar(:,:,:,:)
154 subroutine a5a (xcolon) bind(C)
155 character(len=:), allocatable :: xcolon(:)
158 ! Assumed-rank array, allocatable
160 subroutine a1ar (x1) bind(C) ! { dg-error "Allocatable character dummy argument 'x1' at .1. must have deferred length as procedure 'a1ar' is BIND\\(C\\)" }
161 character(len=1), allocatable :: x1(..)
164 subroutine a2ar (x2) bind(C) ! { dg-error "Allocatable character dummy argument 'x2' at .1. must have deferred length as procedure 'a2ar' is BIND\\(C\\)" }
165 character(len=2), allocatable :: x2(..)
168 subroutine a3ar (xn, n) bind(C) ! { dg-error "Allocatable character dummy argument 'xn' at .1. must have deferred length as procedure 'a3ar' is BIND\\(C\\)" }
169 integer :: n
170 character(len=n), allocatable :: xn(..)
173 subroutine a4ar (xstar) bind(C) ! { dg-error "Allocatable character dummy argument 'xstar' at .1. must have deferred length as procedure 'a4ar' is BIND\\(C\\)" }
174 character(len=*), allocatable :: xstar(..)
177 subroutine a5ar (xcolon) bind(C)
178 character(len=:), allocatable :: xcolon(..)
181 ! POINTER
182 ! Scalar, pointer
184 subroutine s1p (x1) bind(C) ! { dg-error "Pointer character dummy argument 'x1' at .1. must have deferred length as procedure 's1p' is BIND\\(C\\)" }
185 character(len=1), pointer :: x1
188 subroutine s2p (x2) bind(C) ! { dg-error "Pointer character dummy argument 'x2' at .1. must have deferred length as procedure 's2p' is BIND\\(C\\)" }
189 character(len=2), pointer :: x2
192 subroutine s3p (xn, n) bind(C) ! { dg-error "Pointer character dummy argument 'xn' at .1. must have deferred length as procedure 's3p' is BIND\\(C\\)" }
193 integer :: n
194 character(len=n), pointer :: xn
197 subroutine s4p (xstar) bind(C) ! { dg-error "Pointer character dummy argument 'xstar' at .1. must have deferred length as procedure 's4p' is BIND\\(C\\)" }
198 character(len=*), pointer :: xstar
201 subroutine s5p (xcolon) bind(C)
202 character(len=:), pointer :: xcolon
205 ! Assumed-shape array, pointer
207 subroutine a1p (x1) bind(C) ! { dg-error "Pointer character dummy argument 'x1' at .1. must have deferred length as procedure 'a1p' is BIND\\(C\\)" }
208 character(len=1), pointer :: x1(:)
211 subroutine a2p (x2) bind(C) ! { dg-error "Pointer character dummy argument 'x2' at .1. must have deferred length as procedure 'a2p' is BIND\\(C\\)" }
212 character(len=2), pointer :: x2(:,:)
215 subroutine a3p (xn, n) bind(C) ! { dg-error "Pointer character dummy argument 'xn' at .1. must have deferred length as procedure 'a3p' is BIND\\(C\\)" }
216 integer :: n
217 character(len=n), pointer :: xn(:,:,:)
220 subroutine a4p (xstar) bind(C) ! { dg-error "Pointer character dummy argument 'xstar' at .1. must have deferred length as procedure 'a4p' is BIND\\(C\\)" }
221 character(len=*), pointer :: xstar(:,:,:,:)
224 subroutine a5p (xcolon) bind(C)
225 character(len=:), pointer :: xcolon(:)
228 ! Assumed-rank array, pointer
230 subroutine a1pr (x1) bind(C) ! { dg-error "Pointer character dummy argument 'x1' at .1. must have deferred length as procedure 'a1pr' is BIND\\(C\\)" }
231 character(len=1), pointer :: x1(..)
234 subroutine a2pr (x2) bind(C) ! { dg-error "Pointer character dummy argument 'x2' at .1. must have deferred length as procedure 'a2pr' is BIND\\(C\\)" }
235 character(len=2), pointer :: x2(..)
238 subroutine a3pr (xn, n) bind(C) ! { dg-error "Pointer character dummy argument 'xn' at .1. must have deferred length as procedure 'a3pr' is BIND\\(C\\)" }
239 integer :: n
240 character(len=n), pointer :: xn(..)
243 subroutine a4pr (xstar) bind(C) ! { dg-error "Pointer character dummy argument 'xstar' at .1. must have deferred length as procedure 'a4pr' is BIND\\(C\\)" }
244 character(len=*), pointer :: xstar(..)
247 subroutine a5pr (xcolon) bind(C)
248 character(len=:), pointer :: xcolon(..)