1! { dg-do run }
2
3  integer(kind=1) :: i1
4  integer(kind=2) :: i2
5  integer(kind=4) :: i4
6  integer(kind=8) :: i8
7
8  i1 = -1
9  i2 = -1
10  i4 = -1
11  i8 = -1
12
13  if (leadz(i1) /= 0) call abort
14  if (leadz(i2) /= 0) call abort
15  if (leadz(i4) /= 0) call abort
16  if (leadz(i8) /= 0) call abort
17
18  if (trailz(i1) /= 0) call abort
19  if (trailz(i2) /= 0) call abort
20  if (trailz(i4) /= 0) call abort
21  if (trailz(i8) /= 0) call abort
22
23  if (leadz(-1_1) /= 0) call abort
24  if (leadz(-1_2) /= 0) call abort
25  if (leadz(-1_4) /= 0) call abort
26  if (leadz(-1_8) /= 0) call abort
27
28  if (trailz(-1_1) /= 0) call abort
29  if (trailz(-1_2) /= 0) call abort
30  if (trailz(-1_4) /= 0) call abort
31  if (trailz(-1_8) /= 0) call abort
32
33  i1 = -64
34  i2 = -64
35  i4 = -64
36  i8 = -64
37
38  if (leadz(i1) /= 0) call abort
39  if (leadz(i2) /= 0) call abort
40  if (leadz(i4) /= 0) call abort
41  if (leadz(i8) /= 0) call abort
42
43  if (trailz(i1) /= 6) call abort
44  if (trailz(i2) /= 6) call abort
45  if (trailz(i4) /= 6) call abort
46  if (trailz(i8) /= 6) call abort
47
48  if (leadz(-64_1) /= 0) call abort
49  if (leadz(-64_2) /= 0) call abort
50  if (leadz(-64_4) /= 0) call abort
51  if (leadz(-64_8) /= 0) call abort
52
53  if (trailz(-64_1) /= 6) call abort
54  if (trailz(-64_2) /= 6) call abort
55  if (trailz(-64_4) /= 6) call abort
56  if (trailz(-64_8) /= 6) call abort
57
58  i1 = -108
59  i2 = -108
60  i4 = -108
61  i8 = -108
62
63  if (leadz(i1) /= 0) call abort
64  if (leadz(i2) /= 0) call abort
65  if (leadz(i4) /= 0) call abort
66  if (leadz(i8) /= 0) call abort
67
68  if (trailz(i1) /= 2) call abort
69  if (trailz(i2) /= 2) call abort
70  if (trailz(i4) /= 2) call abort
71  if (trailz(i8) /= 2) call abort
72
73  if (leadz(-108_1) /= 0) call abort
74  if (leadz(-108_2) /= 0) call abort
75  if (leadz(-108_4) /= 0) call abort
76  if (leadz(-108_8) /= 0) call abort
77
78  if (trailz(-108_1) /= 2) call abort
79  if (trailz(-108_2) /= 2) call abort
80  if (trailz(-108_4) /= 2) call abort
81  if (trailz(-108_8) /= 2) call abort
82
83  i1 = 1
84  i2 = 1
85  i4 = 1
86  i8 = 1
87
88  if (leadz(i1) /= bit_size(i1) - 1) call abort
89  if (leadz(i2) /= bit_size(i2) - 1) call abort
90  if (leadz(i4) /= bit_size(i4) - 1) call abort
91  if (leadz(i8) /= bit_size(i8) - 1) call abort
92
93  if (trailz(i1) /= 0) call abort
94  if (trailz(i2) /= 0) call abort
95  if (trailz(i4) /= 0) call abort
96  if (trailz(i8) /= 0) call abort
97
98  if (leadz(1_1) /= bit_size(1_1) - 1) call abort
99  if (leadz(1_2) /= bit_size(1_2) - 1) call abort
100  if (leadz(1_4) /= bit_size(1_4) - 1) call abort
101  if (leadz(1_8) /= bit_size(1_8) - 1) call abort
102
103  if (trailz(1_1) /= 0) call abort
104  if (trailz(1_2) /= 0) call abort
105  if (trailz(1_4) /= 0) call abort
106  if (trailz(1_8) /= 0) call abort
107
108  i1 = 64
109  i2 = 64
110  i4 = 64
111  i8 = 64
112
113  if (leadz(i1) /= 1) call abort
114  if (leadz(i2) /= 9) call abort
115  if (leadz(i4) /= 25) call abort
116  if (leadz(i8) /= 57) call abort
117
118  if (trailz(i1) /= 6) call abort
119  if (trailz(i2) /= 6) call abort
120  if (trailz(i4) /= 6) call abort
121  if (trailz(i8) /= 6) call abort
122
123  if (leadz(64_1) /= 1) call abort
124  if (leadz(64_2) /= 9) call abort
125  if (leadz(64_4) /= 25) call abort
126  if (leadz(64_8) /= 57) call abort
127
128  if (trailz(64_1) /= 6) call abort
129  if (trailz(64_2) /= 6) call abort
130  if (trailz(64_4) /= 6) call abort
131  if (trailz(64_8) /= 6) call abort
132
133end
134