[AArch64] Merge stores of D-register values with different modes
[official-gcc.git] / gcc / testsuite / gfortran.dg / char_eoshift_1.f90
blobf50cf20a69c0d045f4904dc1eea7bdfa6ad4d7cf
1 ! Test eoshift0 for character arrays.
2 ! { dg-do run }
3 program main
4 implicit none
5 integer, parameter :: n1 = 6, n2 = 5, n3 = 4, slen = 3
6 character (len = slen), dimension (n1, n2, n3) :: a
7 character (len = slen) :: filler
8 integer (kind = 1) :: shift1 = 4
9 integer (kind = 2) :: shift2 = 2
10 integer (kind = 4) :: shift3 = 3
11 integer (kind = 8) :: shift4 = 1
12 integer :: i1, i2, i3
14 do i3 = 1, n3
15 do i2 = 1, n2
16 do i1 = 1, n1
17 a (i1, i2, i3) = 'abcdef'(i1:i1) // 'ghijk'(i2:i2) // 'lmno'(i3:i3)
18 end do
19 end do
20 end do
22 call test (eoshift (a, shift1, 'foo', 1), int (shift1), 0, 0, 'foo')
23 call test (eoshift (a, shift2, 'foo', 2), 0, int (shift2), 0, 'foo')
24 call test (eoshift (a, shift3, 'foo', 2), 0, int (shift3), 0, 'foo')
25 call test (eoshift (a, shift4, 'foo', 3), 0, 0, int (shift4), 'foo')
27 filler = ''
28 call test (eoshift (a, shift1, dim = 1), int (shift1), 0, 0, filler)
29 call test (eoshift (a, shift2, dim = 2), 0, int (shift2), 0, filler)
30 call test (eoshift (a, shift3, dim = 2), 0, int (shift3), 0, filler)
31 call test (eoshift (a, shift4, dim = 3), 0, 0, int (shift4), filler)
32 contains
33 subroutine test (b, d1, d2, d3, filler)
34 character (len = slen), dimension (n1, n2, n3) :: b
35 character (len = slen) :: filler
36 integer :: d1, d2, d3
38 do i3 = 1, n3
39 do i2 = 1, n2
40 do i1 = 1, n1
41 if (i1 + d1 .gt. n1 .or. i2 + d2 .gt. n2 .or. i3 + d3 .gt. n3) then
42 if (b (i1, i2, i3) .ne. filler) STOP 1
43 else
44 if (b (i1, i2, i3) .ne. a (i1 + d1, i2 + d2, i3 + d3)) STOP 2
45 end if
46 end do
47 end do
48 end do
49 end subroutine test
50 end program main