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