1! { dg-do run }
2! { dg-options "-fbackslash" }
3
4  implicit none
5  character(kind=1,len=3) :: s1(3)
6  character(kind=4,len=3) :: s4(3)
7
8  s1 = [ "abc", "def", "ghi" ]
9  s4 = s1
10  s4 = [ "abc", "def", "ghi" ]
11
12  if (any (cshift (s1, 0) /= s1)) STOP 1
13  if (any (cshift (s4, 0) /= s4)) STOP 2
14  if (any (cshift (s1, 3) /= s1)) STOP 3
15  if (any (cshift (s4, 3) /= s4)) STOP 4
16  if (any (cshift (s1, 6) /= s1)) STOP 5
17  if (any (cshift (s4, 6) /= s4)) STOP 6
18  if (any (cshift (s1, -3) /= s1)) STOP 7
19  if (any (cshift (s4, -3) /= s4)) STOP 8
20  if (any (cshift (s1, -6) /= s1)) STOP 9
21  if (any (cshift (s4, -6) /= s4)) STOP 10
22
23  if (any (cshift (s1, 1) /= [ s1(2:3), s1(1) ])) STOP 11
24  if (any (cshift (s1, -1) /= [ s1(3), s1(1:2) ])) STOP 12
25  if (any (cshift (s1, 4) /= [ s1(2:3), s1(1) ])) STOP 13
26  if (any (cshift (s1, -4) /= [ s1(3), s1(1:2) ])) STOP 14
27
28  if (any (cshift (s4, 1) /= [ s4(2:3), s4(1) ])) STOP 15
29  if (any (cshift (s4, -1) /= [ s4(3), s4(1:2) ])) STOP 16
30  if (any (cshift (s4, 4) /= [ s4(2:3), s4(1) ])) STOP 17
31  if (any (cshift (s4, -4) /= [ s4(3), s4(1:2) ])) STOP 18
32
33  if (any (cshift (s1, 2) /= [ s1(3), s1(1:2) ])) STOP 19
34  if (any (cshift (s1, -2) /= [ s1(2:3), s1(1) ])) STOP 20
35  if (any (cshift (s1, 5) /= [ s1(3), s1(1:2) ])) STOP 21
36  if (any (cshift (s1, -5) /= [ s1(2:3), s1(1) ])) STOP 22
37
38  if (any (cshift (s4, 2) /= [ s4(3), s4(1:2) ])) STOP 23
39  if (any (cshift (s4, -2) /= [ s4(2:3), s4(1) ])) STOP 24
40  if (any (cshift (s4, 5) /= [ s4(3), s4(1:2) ])) STOP 25
41  if (any (cshift (s4, -5) /= [ s4(2:3), s4(1) ])) STOP 26
42
43
44  if (any (eoshift (s1, 0) /= s1)) STOP 27
45  if (any (eoshift (s4, 0) /= s4)) STOP 28
46  if (any (eoshift (s1, 3) /= "")) STOP 29
47  if (any (eoshift (s4, 3) /= 4_"")) STOP 30
48  if (any (eoshift (s1, 3, "   ") /= "")) STOP 31
49  if (any (eoshift (s4, 3, 4_"   ") /= 4_"")) STOP 32
50  if (any (eoshift (s1, 3, " x ") /= " x")) STOP 33
51  if (any (eoshift (s4, 3, 4_" x ") /= 4_" x")) STOP 34
52  if (any (eoshift (s1, -3) /= "")) STOP 35
53  if (any (eoshift (s4, -3) /= 4_"")) STOP 36
54  if (any (eoshift (s1, -3, "   ") /= "")) STOP 37
55  if (any (eoshift (s4, -3, 4_"   ") /= 4_"")) STOP 38
56  if (any (eoshift (s1, -3, " x ") /= " x")) STOP 39
57  if (any (eoshift (s4, -3, 4_" x ") /= 4_" x")) STOP 40
58  if (any (eoshift (s1, 4) /= "")) STOP 41
59  if (any (eoshift (s4, 4) /= 4_"")) STOP 42
60  if (any (eoshift (s1, 4, "   ") /= "")) STOP 43
61  if (any (eoshift (s4, 4, 4_"   ") /= 4_"")) STOP 44
62  if (any (eoshift (s1, 4, " x ") /= " x")) STOP 45
63  if (any (eoshift (s4, 4, 4_" x ") /= 4_" x")) STOP 46
64  if (any (eoshift (s1, -4) /= "")) STOP 47
65  if (any (eoshift (s4, -4) /= 4_"")) STOP 48
66  if (any (eoshift (s1, -4, "   ") /= "")) STOP 49
67  if (any (eoshift (s4, -4, 4_"   ") /= 4_"")) STOP 50
68  if (any (eoshift (s1, -4, " x ") /= " x")) STOP 51
69  if (any (eoshift (s4, -4, 4_" x ") /= 4_" x")) STOP 52
70
71  if (any (eoshift (s1, 1) /= [ s1(2:3), "   " ])) STOP 53
72  if (any (eoshift (s1, -1) /= [ "   ", s1(1:2) ])) STOP 54
73  if (any (eoshift (s1, 1, " x ") /= [ s1(2:3), " x " ])) STOP 55
74  if (any (eoshift (s1, -1, " x ") /= [ " x ", s1(1:2) ])) STOP 56
75  if (any (eoshift (s4, 1) /= [ s4(2:3), 4_"   " ])) STOP 57
76  if (any (eoshift (s4, -1) /= [ 4_"   ", s4(1:2) ])) STOP 58
77  if (any (eoshift (s4, 1, 4_" x ") /= [ s4(2:3), 4_" x " ])) STOP 59
78  if (any (eoshift (s4, -1, 4_" x ") /= [ 4_" x ", s4(1:2) ])) STOP 60
79
80  if (any (eoshift (s1, 2) /= [ s1(3), "   ", "   " ])) STOP 61
81  if (any (eoshift (s1, -2) /= [ "   ", "   ", s1(1) ])) STOP 62
82  if (any (eoshift (s1, 2, " x ") /= [ s1(3), " x ", " x " ])) STOP 63
83  if (any (eoshift (s1, -2, " x ") /= [ " x ", " x ", s1(1) ])) STOP 64
84  if (any (eoshift (s4, 2) /= [ s4(3), 4_"   ", 4_"   " ])) STOP 65
85  if (any (eoshift (s4, -2) /= [ 4_"   ", 4_"   ", s4(1) ])) STOP 66
86  if (any (eoshift (s4, 2, 4_" x ") /= [ s4(3), 4_" x ", 4_" x " ])) STOP 67
87  if (any (eoshift (s4, -2, 4_" x ") /= [ 4_" x ", 4_" x ", s4(1) ])) STOP 68
88
89end
90