annotate gcc/testsuite/gfortran.dg/transfer_intrinsic_5.f90 @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! { dg-do run }
kono
parents:
diff changeset
2 !
kono
parents:
diff changeset
3 ! PR fortran/56615
kono
parents:
diff changeset
4 !
kono
parents:
diff changeset
5 ! Contributed by Harald Anlauf
kono
parents:
diff changeset
6 !
kono
parents:
diff changeset
7 !
kono
parents:
diff changeset
8 program gfcbug
kono
parents:
diff changeset
9 implicit none
kono
parents:
diff changeset
10 integer, parameter :: n = 8
kono
parents:
diff changeset
11 integer :: i
kono
parents:
diff changeset
12 character(len=1), dimension(n) :: a, b
kono
parents:
diff changeset
13 character(len=n) :: s, t
kono
parents:
diff changeset
14 character(len=n/2) :: u
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 do i = 1, n
kono
parents:
diff changeset
17 a(i) = achar (i-1 + iachar("a"))
kono
parents:
diff changeset
18 end do
kono
parents:
diff changeset
19 ! print *, "# Forward:"
kono
parents:
diff changeset
20 ! print *, "a=", a
kono
parents:
diff changeset
21 s = transfer (a, s)
kono
parents:
diff changeset
22 ! print *, "s=", s
kono
parents:
diff changeset
23 call cmp (a, s)
kono
parents:
diff changeset
24 ! print *, " stride = +2:"
kono
parents:
diff changeset
25 do i = 1, n/2
kono
parents:
diff changeset
26 u(i:i) = a(2*i-1)
kono
parents:
diff changeset
27 end do
kono
parents:
diff changeset
28 ! print *, "u=", u
kono
parents:
diff changeset
29 call cmp (a(1:n:2), u)
kono
parents:
diff changeset
30 ! print *
kono
parents:
diff changeset
31 ! print *, "# Backward:"
kono
parents:
diff changeset
32 b = a(n:1:-1)
kono
parents:
diff changeset
33 ! print *, "b=", b
kono
parents:
diff changeset
34 t = transfer (b, t)
kono
parents:
diff changeset
35 ! print *, "t=", t
kono
parents:
diff changeset
36 call cmp (b, t)
kono
parents:
diff changeset
37 ! print *, " stride = -1:"
kono
parents:
diff changeset
38 call cmp (a(n:1:-1), t)
kono
parents:
diff changeset
39 contains
kono
parents:
diff changeset
40 subroutine cmp (b, s)
kono
parents:
diff changeset
41 character(len=1), dimension(:), intent(in) :: b
kono
parents:
diff changeset
42 character(len=*), intent(in) :: s
kono
parents:
diff changeset
43 character(len=size(b)) :: c
kono
parents:
diff changeset
44 c = transfer (b, c)
kono
parents:
diff changeset
45 if (c /= s) then
kono
parents:
diff changeset
46 print *, "c=", c, " ", merge (" ok","BUG!", c == s)
kono
parents:
diff changeset
47 call abort ()
kono
parents:
diff changeset
48 end if
kono
parents:
diff changeset
49 end subroutine cmp
kono
parents:
diff changeset
50 end program gfcbug