PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gfortran.dg / widechar_intrinsics_5.f90
bloba45216fbbc061c8b8703532372a663add57164f8
1 ! { dg-do run }
2 ! { dg-options "-fbackslash" }
4 implicit none
5 integer :: i, j
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])
20 allocate (m2(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)
43 deallocate (m2)
46 allocate (m2(3,4))
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)
51 deallocate (m2)
53 allocate (m2(3,3))
54 do i = 1, 3
55 do j = 1, 3
56 m2(i,j) = m1(i,j)
57 end do
58 end do
60 m2 = transpose(m2)
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
66 m1 = transpose(p)
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
71 deallocate (m2)
73 allocate (m2(3,3))
74 m2 = p
75 m1 = m2
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
79 deallocate (m2)
81 allocate (m2(3,3))
82 m2 = p
83 m1 = m2
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
96 deallocate (m2)
98 allocate (m2(1,7))
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])
102 m1 = p
103 if (any (unpack(m2(1,:), p /= 4_"", 4_" ") /= p)) STOP 34
104 if (any (unpack(m2(1,:), m1 /= 4_"", 4_" ") /= m1)) STOP 35
105 deallocate (m2)
107 contains
109 subroutine check_shape (array, res, l)
110 character(kind=4,len=*), dimension(:,:) :: array
111 integer, dimension(:) :: res
112 integer :: l
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