1! { dg-do run }
2! { dg-options "-fdump-tree-original" }
3! PR fortran/36462
4!
5  implicit none
6  character(len=10,kind=1) string1
7  character(len=10,kind=4) string4
8  string1 = 'ABCDEEDCBA'
9  string4 = 'ABCDEEDCBA'
10
11  if(index(string1,1_'A') /= 1) call abort()
12  if(index(string4,4_'A') /= 1) call abort()
13  if(index(string1,1_'A',kind=4) /= 1_4) call abort()
14  if(index(string4,4_'A',kind=4) /= 1_4) call abort()
15  if(index(string1,1_'A',kind=1) /= 1_1) call abort()
16  if(index(string4,4_'A',kind=1) /= 1_1) call abort()
17
18  if(index(string1,1_'A',back=.true.) /= 10) call abort()
19  if(index(string4,4_'A',back=.true.) /= 10) call abort()
20  if(index(string1,1_'A',kind=4,back=.true.) /= 10_4) call abort()
21  if(index(string4,4_'A',kind=4,back=.true.) /= 10_4) call abort()
22  if(index(string1,1_'A',kind=1,back=.true.) /= 10_1) call abort()
23  if(index(string4,4_'A',kind=1,back=.true.) /= 10_1) call abort()
24
25  if(index(string1,1_'A',back=.false.) /= 1) call abort()
26  if(index(string4,4_'A',back=.false.) /= 1) call abort()
27  if(index(string1,1_'A',kind=4,back=.false.) /= 1_4) call abort()
28  if(index(string4,4_'A',kind=4,back=.false.) /= 1_4) call abort()
29  if(index(string1,1_'A',kind=1,back=.false.) /= 1_1) call abort()
30  if(index(string4,4_'A',kind=1,back=.false.) /= 1_1) call abort()
31
32  if(scan(string1,1_'A') /= 1) call abort()
33  if(scan(string4,4_'A') /= 1) call abort()
34  if(scan(string1,1_'A',kind=4) /= 1_4) call abort()
35  if(scan(string4,4_'A',kind=4) /= 1_4) call abort()
36  if(scan(string1,1_'A',kind=1) /= 1_1) call abort()
37  if(scan(string4,4_'A',kind=1) /= 1_1) call abort()
38
39  if(scan(string1,1_'A',back=.true.) /= 10) call abort()
40  if(scan(string4,4_'A',back=.true.) /= 10) call abort()
41  if(scan(string1,1_'A',kind=4,back=.true.) /= 10_4) call abort()
42  if(scan(string4,4_'A',kind=4,back=.true.) /= 10_4) call abort()
43  if(scan(string1,1_'A',kind=1,back=.true.) /= 10_1) call abort()
44  if(scan(string4,4_'A',kind=1,back=.true.) /= 10_1) call abort()
45
46  if(scan(string1,1_'A',back=.false.) /= 1) call abort()
47  if(scan(string4,4_'A',back=.false.) /= 1) call abort()
48  if(scan(string1,1_'A',kind=4,back=.false.) /= 1_4) call abort()
49  if(scan(string4,4_'A',kind=4,back=.false.) /= 1_4) call abort()
50  if(scan(string1,1_'A',kind=1,back=.false.) /= 1_1) call abort()
51  if(scan(string4,4_'A',kind=1,back=.false.) /= 1_1) call abort()
52  end
53
54! { dg-final { scan-tree-dump-times "if ..integer.kind=1.. _gfortran_string_index" 6 "original" } }
55! { dg-final { scan-tree-dump-times "if ..integer.kind=1.. _gfortran_string_scan" 6 "original" } }
56