1! { dg-do run }
2! { dg-options "-fbackslash" }
3
4  character(kind=1,len=20) :: s1, t1
5  character(kind=4,len=20) :: s4, t4
6
7  call test (4_"ccc  ", 4_"bbb", 4_"ccc", 4_"ddd")
8  call test (4_" \xACp  ", 4_" \x900000 ", 4_" \xACp  ", 4_"ddd")
9  call test (4_" \xACp  ", 4_" \x900000 ", 4_" \xACp  ", 4_"ddd")
10
11  call test2 (4_" \x900000 ", 4_" \xACp  ", 4_"ddd")
12
13contains
14
15  subroutine test(s4, t4, u4, v4)
16    character(kind=4,len=*) :: s4, t4, u4, v4
17
18    if (.not. (s4 >= t4)) STOP 1
19    if (.not. (s4 > t4)) STOP 2
20    if (.not. (s4 .ge. t4)) STOP 3
21    if (.not. (s4 .gt. t4)) STOP 4
22    if (      (s4 == t4)) STOP 5
23    if (.not. (s4 /= t4)) STOP 6
24    if (      (s4 .eq. t4)) STOP 7
25    if (.not. (s4 .ne. t4)) STOP 8
26    if (      (s4 <= t4)) STOP 9
27    if (      (s4 < t4)) STOP 10
28    if (      (s4 .le. t4)) STOP 11
29    if (      (s4 .lt. t4)) STOP 12
30
31    if (.not. (s4 >= u4)) STOP 13
32    if (      (s4 > u4)) STOP 14
33    if (.not. (s4 .ge. u4)) STOP 15
34    if (      (s4 .gt. u4)) STOP 16
35    if (.not. (s4 == u4)) STOP 17
36    if (      (s4 /= u4)) STOP 18
37    if (.not. (s4 .eq. u4)) STOP 19
38    if (      (s4 .ne. u4)) STOP 20
39    if (.not. (s4 <= u4)) STOP 21
40    if (      (s4 < u4)) STOP 22
41    if (.not. (s4 .le. u4)) STOP 23
42    if (      (s4 .lt. u4)) STOP 24
43
44    if (      (s4 >= v4)) STOP 25
45    if (      (s4 > v4)) STOP 26
46    if (      (s4 .ge. v4)) STOP 27
47    if (      (s4 .gt. v4)) STOP 28
48    if (      (s4 == v4)) STOP 29
49    if (.not. (s4 /= v4)) STOP 30
50    if (      (s4 .eq. v4)) STOP 31
51    if (.not. (s4 .ne. v4)) STOP 32
52    if (.not. (s4 <= v4)) STOP 33
53    if (.not. (s4 < v4)) STOP 34
54    if (.not. (s4 .le. v4)) STOP 35
55    if (.not. (s4 .lt. v4)) STOP 36
56
57  end subroutine test
58
59  subroutine test2(t4, u4, v4)
60    character(kind=4,len=*) :: t4, u4, v4
61
62    if (.not. (4_" \xACp  " >= t4)) STOP 37
63    if (.not. (4_" \xACp  " > t4)) STOP 38
64    if (.not. (4_" \xACp  " .ge. t4)) STOP 39
65    if (.not. (4_" \xACp  " .gt. t4)) STOP 40
66    if (      (4_" \xACp  " == t4)) STOP 41
67    if (.not. (4_" \xACp  " /= t4)) STOP 42
68    if (      (4_" \xACp  " .eq. t4)) STOP 43
69    if (.not. (4_" \xACp  " .ne. t4)) STOP 44
70    if (      (4_" \xACp  " <= t4)) STOP 45
71    if (      (4_" \xACp  " < t4)) STOP 46
72    if (      (4_" \xACp  " .le. t4)) STOP 47
73    if (      (4_" \xACp  " .lt. t4)) STOP 48
74
75    if (.not. (4_" \xACp  " >= u4)) STOP 49
76    if (      (4_" \xACp  " > u4)) STOP 50
77    if (.not. (4_" \xACp  " .ge. u4)) STOP 51
78    if (      (4_" \xACp  " .gt. u4)) STOP 52
79    if (.not. (4_" \xACp  " == u4)) STOP 53
80    if (      (4_" \xACp  " /= u4)) STOP 54
81    if (.not. (4_" \xACp  " .eq. u4)) STOP 55
82    if (      (4_" \xACp  " .ne. u4)) STOP 56
83    if (.not. (4_" \xACp  " <= u4)) STOP 57
84    if (      (4_" \xACp  " < u4)) STOP 58
85    if (.not. (4_" \xACp  " .le. u4)) STOP 59
86    if (      (4_" \xACp  " .lt. u4)) STOP 60
87
88    if (      (4_" \xACp  " >= v4)) STOP 61
89    if (      (4_" \xACp  " > v4)) STOP 62
90    if (      (4_" \xACp  " .ge. v4)) STOP 63
91    if (      (4_" \xACp  " .gt. v4)) STOP 64
92    if (      (4_" \xACp  " == v4)) STOP 65
93    if (.not. (4_" \xACp  " /= v4)) STOP 66
94    if (      (4_" \xACp  " .eq. v4)) STOP 67
95    if (.not. (4_" \xACp  " .ne. v4)) STOP 68
96    if (.not. (4_" \xACp  " <= v4)) STOP 69
97    if (.not. (4_" \xACp  " < v4)) STOP 70
98    if (.not. (4_" \xACp  " .le. v4)) STOP 71
99    if (.not. (4_" \xACp  " .lt. v4)) STOP 72
100
101  end subroutine test2
102
103  subroutine test3(t4, u4, v4)
104    character(kind=4,len=*) :: t4, u4, v4
105
106    if (.not. (4_" \xACp  " >= 4_" \x900000 ")) STOP 73
107    if (.not. (4_" \xACp  " > 4_" \x900000 ")) STOP 74
108    if (.not. (4_" \xACp  " .ge. 4_" \x900000 ")) STOP 75
109    if (.not. (4_" \xACp  " .gt. 4_" \x900000 ")) STOP 76
110    if (      (4_" \xACp  " == 4_" \x900000 ")) STOP 77
111    if (.not. (4_" \xACp  " /= 4_" \x900000 ")) STOP 78
112    if (      (4_" \xACp  " .eq. 4_" \x900000 ")) STOP 79
113    if (.not. (4_" \xACp  " .ne. 4_" \x900000 ")) STOP 80
114    if (      (4_" \xACp  " <= 4_" \x900000 ")) STOP 81
115    if (      (4_" \xACp  " < 4_" \x900000 ")) STOP 82
116    if (      (4_" \xACp  " .le. 4_" \x900000 ")) STOP 83
117    if (      (4_" \xACp  " .lt. 4_" \x900000 ")) STOP 84
118
119    if (.not. (4_" \xACp  " >= 4_" \xACp  ")) STOP 85
120    if (      (4_" \xACp  " > 4_" \xACp  ")) STOP 86
121    if (.not. (4_" \xACp  " .ge. 4_" \xACp  ")) STOP 87
122    if (      (4_" \xACp  " .gt. 4_" \xACp  ")) STOP 88
123    if (.not. (4_" \xACp  " == 4_" \xACp  ")) STOP 89
124    if (      (4_" \xACp  " /= 4_" \xACp  ")) STOP 90
125    if (.not. (4_" \xACp  " .eq. 4_" \xACp  ")) STOP 91
126    if (      (4_" \xACp  " .ne. 4_" \xACp  ")) STOP 92
127    if (.not. (4_" \xACp  " <= 4_" \xACp  ")) STOP 93
128    if (      (4_" \xACp  " < 4_" \xACp  ")) STOP 94
129    if (.not. (4_" \xACp  " .le. 4_" \xACp  ")) STOP 95
130    if (      (4_" \xACp  " .lt. 4_" \xACp  ")) STOP 96
131
132    if (      (4_" \xACp  " >= 4_"ddd")) STOP 97
133    if (      (4_" \xACp  " > 4_"ddd")) STOP 98
134    if (      (4_" \xACp  " .ge. 4_"ddd")) STOP 99
135    if (      (4_" \xACp  " .gt. 4_"ddd")) STOP 100
136    if (      (4_" \xACp  " == 4_"ddd")) STOP 101
137    if (.not. (4_" \xACp  " /= 4_"ddd")) STOP 102
138    if (      (4_" \xACp  " .eq. 4_"ddd")) STOP 103
139    if (.not. (4_" \xACp  " .ne. 4_"ddd")) STOP 104
140    if (.not. (4_" \xACp  " <= 4_"ddd")) STOP 105
141    if (.not. (4_" \xACp  " < 4_"ddd")) STOP 106
142    if (.not. (4_" \xACp  " .le. 4_"ddd")) STOP 107
143    if (.not. (4_" \xACp  " .lt. 4_"ddd")) STOP 108
144
145  end subroutine test3
146
147end
148