annotate gcc/testsuite/gfortran.dg/char_result_3.f90 @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! Related to PR 15326. Try calling string functions whose lengths involve
kono
parents:
diff changeset
2 ! some sort of array calculation.
kono
parents:
diff changeset
3 ! { dg-do run }
kono
parents:
diff changeset
4 pure elemental function double (x)
kono
parents:
diff changeset
5 integer, intent (in) :: x
kono
parents:
diff changeset
6 integer :: double
kono
parents:
diff changeset
7 double = x * 2
kono
parents:
diff changeset
8 end function double
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 program main
kono
parents:
diff changeset
11 implicit none
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 interface
kono
parents:
diff changeset
14 pure elemental function double (x)
kono
parents:
diff changeset
15 integer, intent (in) :: x
kono
parents:
diff changeset
16 integer :: double
kono
parents:
diff changeset
17 end function double
kono
parents:
diff changeset
18 end interface
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 integer, dimension (100:104), target :: a
kono
parents:
diff changeset
21 integer, dimension (:), pointer :: ap
kono
parents:
diff changeset
22 integer :: i, lower
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 a = (/ (i + 5, i = 0, 4) /)
kono
parents:
diff changeset
25 ap => a
kono
parents:
diff changeset
26 lower = 11
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 call test (f1 (a), 35)
kono
parents:
diff changeset
29 call test (f1 (ap), 35)
kono
parents:
diff changeset
30 call test (f1 ((/ 5, 10, 50 /)), 65)
kono
parents:
diff changeset
31 call test (f1 (a (101:103)), 21)
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 call test (f2 (a), 115)
kono
parents:
diff changeset
34 call test (f2 (ap), 115)
kono
parents:
diff changeset
35 call test (f2 ((/ 5, 10, 50 /)), 119)
kono
parents:
diff changeset
36 call test (f2 (a (101:103)), 116)
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 call test (f3 (a), 60)
kono
parents:
diff changeset
39 call test (f3 (ap), 60)
kono
parents:
diff changeset
40 call test (f3 ((/ 5, 10, 50 /)), 120)
kono
parents:
diff changeset
41 call test (f3 (a (101:103)), 30)
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 call test (f4 (a, 13, 1), 21)
kono
parents:
diff changeset
44 call test (f4 (ap, 13, 2), 14)
kono
parents:
diff changeset
45 call test (f4 ((/ 5, 10, 50 /), 12, 1), 60)
kono
parents:
diff changeset
46 call test (f4 (a (101:103), 12, 1), 15)
kono
parents:
diff changeset
47 contains
kono
parents:
diff changeset
48 function f1 (array)
kono
parents:
diff changeset
49 integer, dimension (10:) :: array
kono
parents:
diff changeset
50 character (len = sum (array)) :: f1
kono
parents:
diff changeset
51 f1 = ''
kono
parents:
diff changeset
52 end function f1
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 function f2 (array)
kono
parents:
diff changeset
55 integer, dimension (10:) :: array
kono
parents:
diff changeset
56 character (len = array (11) + a (104) + 100) :: f2
kono
parents:
diff changeset
57 f2 = ''
kono
parents:
diff changeset
58 end function f2
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 function f3 (array)
kono
parents:
diff changeset
61 integer, dimension (:) :: array
kono
parents:
diff changeset
62 character (len = sum (double (array (2:)))) :: f3
kono
parents:
diff changeset
63 f3 = ''
kono
parents:
diff changeset
64 end function f3
kono
parents:
diff changeset
65
kono
parents:
diff changeset
66 function f4 (array, upper, stride)
kono
parents:
diff changeset
67 integer, dimension (10:) :: array
kono
parents:
diff changeset
68 integer :: upper, stride
kono
parents:
diff changeset
69 character (len = sum (array (lower:upper:stride))) :: f4
kono
parents:
diff changeset
70 f4 = ''
kono
parents:
diff changeset
71 end function f4
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 subroutine test (string, length)
kono
parents:
diff changeset
74 character (len = *) :: string
kono
parents:
diff changeset
75 integer, intent (in) :: length
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
76 if (len (string) .ne. length) STOP 1
111
kono
parents:
diff changeset
77 end subroutine test
kono
parents:
diff changeset
78 end program main