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

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
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 implicit none
kono
parents:
diff changeset
4 character(len=5), pointer :: a(:), b(:)
kono
parents:
diff changeset
5 character(len=5), pointer :: c, d
kono
parents:
diff changeset
6 allocate (a(2), b(2), c, d)
kono
parents:
diff changeset
7 a = [ "abcde", "ABCDE" ]
kono
parents:
diff changeset
8 call aloct_pointer_copy_4 (b, a)
kono
parents:
diff changeset
9 !print *, b(1)
kono
parents:
diff changeset
10 !print *, b(2)
kono
parents:
diff changeset
11 if (any (a /= b)) stop 'WRONG'
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 call aloct_copy_4 (b, a)
kono
parents:
diff changeset
14 !print *, b(1)
kono
parents:
diff changeset
15 !print *, b(2)
kono
parents:
diff changeset
16 if (any (a /= b)) stop 'WRONG'
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 d = '12345'
kono
parents:
diff changeset
19 c = "abcde"
kono
parents:
diff changeset
20 call test2 (d, c)
kono
parents:
diff changeset
21 !print *, d
kono
parents:
diff changeset
22 if (d /= '1cb15') stop 'WRONG'
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 call test2p (d, c)
kono
parents:
diff changeset
25 !print *, d
kono
parents:
diff changeset
26 if (d /= '1cb15') stop 'WRONG'
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 contains
kono
parents:
diff changeset
29 subroutine aloct_pointer_copy_4(o, i)
kono
parents:
diff changeset
30 character(len=*), pointer :: o(:), i(:)
kono
parents:
diff changeset
31 integer :: nl1, nu1
kono
parents:
diff changeset
32 integer :: i1
kono
parents:
diff changeset
33 nl1 = lbound(i,dim=1)
kono
parents:
diff changeset
34 nu1 = ubound(i,dim=1)
kono
parents:
diff changeset
35 forall (i1 = nl1:nu1) o(i1) = i(i1)
kono
parents:
diff changeset
36 end subroutine aloct_pointer_copy_4
kono
parents:
diff changeset
37 subroutine aloct_copy_4(o, i)
kono
parents:
diff changeset
38 character(len=*), pointer :: o(:), i(:)
kono
parents:
diff changeset
39 integer :: nl1, nu1
kono
parents:
diff changeset
40 integer :: i1
kono
parents:
diff changeset
41 nl1 = lbound(i,dim=1)
kono
parents:
diff changeset
42 nu1 = ubound(i,dim=1)
kono
parents:
diff changeset
43 forall (i1 = nl1:nu1) o(i1) = i(i1)
kono
parents:
diff changeset
44 end subroutine aloct_copy_4
kono
parents:
diff changeset
45 subroutine test2(o, i)
kono
parents:
diff changeset
46 character(len=*) :: o, i
kono
parents:
diff changeset
47 integer :: nl1, nu1
kono
parents:
diff changeset
48 integer :: i1
kono
parents:
diff changeset
49 nl1 = 2
kono
parents:
diff changeset
50 nu1 = 4
kono
parents:
diff changeset
51 forall (i1 = nl1:nu1) o(i1:i1) = i(i1:i1)
kono
parents:
diff changeset
52 forall (i1 = nl1:nu1) o(i1:i1) = o(nu1+1-i1:nu1+1-i1)
kono
parents:
diff changeset
53 end subroutine test2
kono
parents:
diff changeset
54 subroutine test2p(o, i)
kono
parents:
diff changeset
55 character(len=*), pointer :: o, i
kono
parents:
diff changeset
56 integer :: nl1, nu1
kono
parents:
diff changeset
57 integer :: i1
kono
parents:
diff changeset
58 nl1 = 2
kono
parents:
diff changeset
59 nu1 = 4
kono
parents:
diff changeset
60 forall (i1 = nl1:nu1) o(i1:i1) = i(i1:i1) ! <<<< ICE
kono
parents:
diff changeset
61 forall (i1 = nl1:nu1) o(i1:i1) = o(nu1+1-i1:nu1+1-i1)
kono
parents:
diff changeset
62 end subroutine test2p
kono
parents:
diff changeset
63 end