2 ! { dg-options "-fbackslash" }
6 character(kind
=4,len
=5), dimension(3,3), parameter :: &
7 p
= reshape([4_
" \xFF ", 4_
"\0 ", 4_
" foo ", &
8 4_
"\u1230\uD67Bde\U31DC8B30", 4_
" ", 4_
"fa fe", &
9 4_
" ", 4_
"foo ", 4_
"nul\0l"], [3,3])
11 character(kind
=4,len
=5), dimension(3,3) :: m1
12 character(kind
=4,len
=5), allocatable
, dimension(:,:) :: m2
14 if (kind (p
) /= 4) STOP 1
15 if (kind (m1
) /= 4) STOP 2
16 if (kind (m2
) /= 4) STOP 3
18 m1
= reshape (p
, [3,3])
21 m2(:,:) = reshape (m1
, [3,3])
23 if (any (m1
/= p
)) STOP 4
24 if (any (m2
/= p
)) STOP 5
26 if (size (p
) /= 9) STOP 6
27 if (size (m1
) /= 9) STOP 7
28 if (size (m2
) /= 9) STOP 8
29 if (size (p
,1) /= 3) STOP 9
30 if (size (m1
,1) /= 3) STOP 10
31 if (size (m2
,1) /= 3) STOP 11
32 if (size (p
,2) /= 3) STOP 12
33 if (size (m1
,2) /= 3) STOP 13
34 if (size (m2
,2) /= 3) STOP 14
36 call check_shape (p
, (/3,3/), 5)
37 call check_shape (p
, shape(p
), 5)
38 call check_shape (m1
, (/3,3/), 5)
39 call check_shape (m1
, shape(m1
), 5)
40 call check_shape (m1
, (/3,3/), 5)
41 call check_shape (m1
, shape(m1
), 5)
47 m2
= reshape (m1
, [3,4], p
)
48 if (any (m2(1:3,1:3) /= p
)) STOP 15
49 if (any (m2(1:3,4) /= m1(1:3,1))) STOP 16
50 call check_shape (m2
, (/3,4/), 5)
61 if (any(transpose(p
) /= m2
)) STOP 17
62 if (any(transpose(m1
) /= m2
)) STOP 18
63 if (any(transpose(m2
) /= p
)) STOP 19
64 if (any(transpose(m2
) /= m1
)) STOP 20
67 if (any(transpose(p
) /= m2
)) STOP 21
68 if (any(m1
/= m2
)) STOP 22
69 if (any(transpose(m2
) /= p
)) STOP 23
70 if (any(transpose(m2
) /= transpose(m1
))) STOP 24
76 if (any (spread ( p
, 1, 2) /= spread (m1
, 1, 2))) STOP 25
77 if (any (spread ( p
, 1, 2) /= spread (m2
, 1, 2))) STOP 26
78 if (any (spread (m1
, 1, 2) /= spread (m2
, 1, 2))) STOP 27
84 if (any (pack (p
, p
/= 4_
"") /= [4_
" \xFF ", 4_
"\0 ", 4_
" foo ", &
85 4_
"\u1230\uD67Bde\U31DC8B30", 4_
"fa fe", &
86 4_
"foo ", 4_
"nul\0l"])) STOP 28
87 if (any (len_trim (pack (p
, p
/= 4_
"")) /= [2,1,4,5,5,3,5])) STOP 29
88 if (any (pack (m1
, m1
/= 4_
"") /= [4_
" \xFF ", 4_
"\0 ", 4_
" foo ", &
89 4_
"\u1230\uD67Bde\U31DC8B30", 4_
"fa fe", &
90 4_
"foo ", 4_
"nul\0l"])) STOP 30
91 if (any (len_trim (pack (m1
, m1
/= 4_
"")) /= [2,1,4,5,5,3,5])) STOP 31
92 if (any (pack (m2
, m2
/= 4_
"") /= [4_
" \xFF ", 4_
"\0 ", 4_
" foo ", &
93 4_
"\u1230\uD67Bde\U31DC8B30", 4_
"fa fe", &
94 4_
"foo ", 4_
"nul\0l"])) STOP 32
95 if (any (len_trim (pack (m2
, m2
/= 4_
"")) /= [2,1,4,5,5,3,5])) STOP 33
99 m2
= reshape ([4_
" \xFF ", 4_
"\0 ", 4_
" foo ", &
100 4_
"\u1230\uD67Bde\U31DC8B30", 4_
"fa fe", &
101 4_
"foo ", 4_
"nul\0l"], [1,7])
103 if (any (unpack(m2(1,:), p
/= 4_
"", 4_
" ") /= p
)) STOP 34
104 if (any (unpack(m2(1,:), m1
/= 4_
"", 4_
" ") /= m1
)) STOP 35
109 subroutine check_shape (array
, res
, l
)
110 character(kind
=4,len
=*), dimension(:,:) :: array
111 integer, dimension(:) :: res
114 if (kind (array
) /= 4) STOP 36
115 if (len(array
) /= l
) STOP 37
117 if (size (res
) /= size (shape (array
))) STOP 38
118 if (any (shape (array
) /= res
)) STOP 39
119 end subroutine check_shape