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