annotate gcc/testsuite/gfortran.dg/pr85996.f90 @ 144:8f4e72ab4e11

fix segmentation fault caused by nothing next cur_op to end
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 21:23:56 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 ! { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 module strings
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 type string
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 integer :: len = 0, size = 0
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 character, pointer :: chars(:) => null()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 end type string
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 interface length
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 module procedure len_s
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 end interface
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 interface char
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 module procedure s_to_c, s_to_slc
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 end interface
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 interface uppercase
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 module procedure uppercase_c
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 end interface
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 interface replace
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 module procedure replace_ccs
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 end interface
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 contains
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 elemental function len_s(s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 type(string), intent(in) :: s
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 integer :: len_s
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 end function len_s
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 pure function s_to_c(s)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 type(string),intent(in) :: s
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 character(length(s)) :: s_to_c
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 end function s_to_c
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 pure function s_to_slc(s,long)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 type(string),intent(in) :: s
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 integer, intent(in) :: long
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 character(long) :: s_to_slc
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 end function s_to_slc
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 pure function lr_sc_s(s,start,ss) result(l)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 type(string), intent(in) :: s
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 character(*), intent(in) :: ss
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 integer, intent(in) :: start
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 integer :: l
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 end function lr_sc_s
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 pure function lr_ccc(s,tgt,ss,action) result(l)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 character(*), intent(in) :: s,tgt,ss,action
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 integer :: l
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 select case(uppercase(action))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 case default
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 end select
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 end function lr_ccc
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 function replace_ccs(s,tgt,ss) result(r)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 character(*), intent(in) :: s,tgt
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 type(string), intent(in) :: ss
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 character(lr_ccc(s,tgt,char(ss),'first')) :: r
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 end function replace_ccs
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 pure function uppercase_c(c)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 character(*), intent(in) :: c
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 character(len(c)) :: uppercase_c
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 end function uppercase_c
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 end module strings