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