1! { dg-do run }
2  integer :: a(3), h, ia(1)
3  integer, allocatable :: c(:)
4  logical :: l
5  logical :: l2(3)
6
7  h = -huge(h)
8  h = h - 1
9  allocate (c(3))
10  a(:) = 5
11  ia = maxloc (a)
12  if (ia(1).ne.1) STOP 1
13  a(2) = huge(h)
14  ia = maxloc (a)
15  if (ia(1).ne.2) STOP 2
16  a(:) = h
17  ia = maxloc (a)
18  if (ia(1).ne.1) STOP 3
19  a(3) = -huge(h)
20  ia = maxloc (a)
21  if (ia(1).ne.3) STOP 4
22  c(:) = 5
23  ia = maxloc (c)
24  if (ia(1).ne.1) STOP 5
25  c(2) = huge(h)
26  ia = maxloc (c)
27  if (ia(1).ne.2) STOP 6
28  c(:) = h
29  ia = maxloc (c)
30  if (ia(1).ne.1) STOP 7
31  c(3) = -huge(h)
32  ia = maxloc (c)
33  if (ia(1).ne.3) STOP 8
34  l = .false.
35  l2(:) = .false.
36  a(:) = 5
37  ia = maxloc (a, mask = l)
38  if (ia(1).ne.0) STOP 9
39  ia = maxloc (a, mask = l2)
40  if (ia(1).ne.0) STOP 10
41  a(2) = huge(h)
42  ia = maxloc (a, mask = l)
43  if (ia(1).ne.0) STOP 11
44  ia = maxloc (a, mask = l2)
45  if (ia(1).ne.0) STOP 12
46  a(:) = h
47  ia = maxloc (a, mask = l)
48  if (ia(1).ne.0) STOP 13
49  ia = maxloc (a, mask = l2)
50  if (ia(1).ne.0) STOP 14
51  a(3) = -huge(h)
52  ia = maxloc (a, mask = l)
53  if (ia(1).ne.0) STOP 15
54  ia = maxloc (a, mask = l2)
55  if (ia(1).ne.0) STOP 16
56  c(:) = 5
57  ia = maxloc (c, mask = l)
58  if (ia(1).ne.0) STOP 17
59  ia = maxloc (c, mask = l2)
60  if (ia(1).ne.0) STOP 18
61  c(2) = huge(h)
62  ia = maxloc (c, mask = l)
63  if (ia(1).ne.0) STOP 19
64  ia = maxloc (c, mask = l2)
65  if (ia(1).ne.0) STOP 20
66  c(:) = h
67  ia = maxloc (c, mask = l)
68  if (ia(1).ne.0) STOP 21
69  ia = maxloc (c, mask = l2)
70  if (ia(1).ne.0) STOP 22
71  c(3) = -huge(h)
72  ia = maxloc (c, mask = l)
73  if (ia(1).ne.0) STOP 23
74  ia = maxloc (c, mask = l2)
75  if (ia(1).ne.0) STOP 24
76  l = .true.
77  l2(:) = .true.
78  a(:) = 5
79  ia = maxloc (a, mask = l)
80  if (ia(1).ne.1) STOP 25
81  ia = maxloc (a, mask = l2)
82  if (ia(1).ne.1) STOP 26
83  a(2) = huge(h)
84  ia = maxloc (a, mask = l)
85  if (ia(1).ne.2) STOP 27
86  ia = maxloc (a, mask = l2)
87  if (ia(1).ne.2) STOP 28
88  a(:) = h
89  ia = maxloc (a, mask = l)
90  if (ia(1).ne.1) STOP 29
91  ia = maxloc (a, mask = l2)
92  if (ia(1).ne.1) STOP 30
93  a(3) = -huge(h)
94  ia = maxloc (a, mask = l)
95  if (ia(1).ne.3) STOP 31
96  ia = maxloc (a, mask = l2)
97  if (ia(1).ne.3) STOP 32
98  c(:) = 5
99  ia = maxloc (c, mask = l)
100  if (ia(1).ne.1) STOP 33
101  ia = maxloc (c, mask = l2)
102  if (ia(1).ne.1) STOP 34
103  c(2) = huge(h)
104  ia = maxloc (c, mask = l)
105  if (ia(1).ne.2) STOP 35
106  ia = maxloc (c, mask = l2)
107  if (ia(1).ne.2) STOP 36
108  c(:) = h
109  ia = maxloc (c, mask = l)
110  if (ia(1).ne.1) STOP 37
111  ia = maxloc (c, mask = l2)
112  if (ia(1).ne.1) STOP 38
113  c(3) = -huge(h)
114  ia = maxloc (c, mask = l)
115  if (ia(1).ne.3) STOP 39
116  ia = maxloc (c, mask = l2)
117  if (ia(1).ne.3) STOP 40
118  deallocate (c)
119  allocate (c(-2:-3))
120  ia = maxloc (c)
121  if (ia(1).ne.0) STOP 41
122end
123