PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gfortran.dg / maxloc_2.f90
blob00318e8cdcd5ae81cfa0d1fe7493df180c4a7e31
1 ! { dg-do run }
2 ! { dg-add-options ieee }
3 ! { dg-skip-if "NaN not supported" { spu-*-* } }
4 real :: a(3), nan, minf, pinf
5 real, allocatable :: c(:)
6 integer :: ia(1)
7 logical :: l
8 logical :: l2(3)
10 nan = 0.0
11 minf = 0.0
12 pinf = 0.0
13 nan = 0.0/nan
14 minf = -1.0/minf
15 pinf = 1.0/pinf
17 allocate (c(3))
18 a(:) = nan
19 ia = maxloc (a)
20 if (ia(1).ne.1) STOP 1
21 a(:) = minf
22 ia = maxloc (a)
23 if (ia(1).ne.1) STOP 2
24 a(1:2) = nan
25 ia = maxloc (a)
26 if (ia(1).ne.3) STOP 3
27 a(2) = 1.0
28 ia = maxloc (a)
29 if (ia(1).ne.2) STOP 4
30 a(2) = pinf
31 ia = maxloc (a)
32 if (ia(1).ne.2) STOP 5
33 c(:) = nan
34 ia = maxloc (c)
35 if (ia(1).ne.1) STOP 6
36 c(:) = minf
37 ia = maxloc (c)
38 if (ia(1).ne.1) STOP 7
39 c(1:2) = nan
40 ia = maxloc (c)
41 if (ia(1).ne.3) STOP 8
42 c(2) = 1.0
43 ia = maxloc (c)
44 if (ia(1).ne.2) STOP 9
45 c(2) = pinf
46 ia = maxloc (c)
47 if (ia(1).ne.2) STOP 10
48 l = .false.
49 l2(:) = .false.
50 a(:) = nan
51 ia = maxloc (a, mask = l)
52 if (ia(1).ne.0) STOP 11
53 ia = maxloc (a, mask = l2)
54 if (ia(1).ne.0) STOP 12
55 a(:) = minf
56 ia = maxloc (a, mask = l)
57 if (ia(1).ne.0) STOP 13
58 ia = maxloc (a, mask = l2)
59 if (ia(1).ne.0) STOP 14
60 a(1:2) = nan
61 ia = maxloc (a, mask = l)
62 if (ia(1).ne.0) STOP 15
63 ia = maxloc (a, mask = l2)
64 if (ia(1).ne.0) STOP 16
65 a(2) = 1.0
66 ia = maxloc (a, mask = l)
67 if (ia(1).ne.0) STOP 17
68 ia = maxloc (a, mask = l2)
69 if (ia(1).ne.0) STOP 18
70 a(2) = pinf
71 ia = maxloc (a, mask = l)
72 if (ia(1).ne.0) STOP 19
73 ia = maxloc (a, mask = l2)
74 if (ia(1).ne.0) STOP 20
75 c(:) = nan
76 ia = maxloc (c, mask = l)
77 if (ia(1).ne.0) STOP 21
78 ia = maxloc (c, mask = l2)
79 if (ia(1).ne.0) STOP 22
80 c(:) = minf
81 ia = maxloc (c, mask = l)
82 if (ia(1).ne.0) STOP 23
83 ia = maxloc (c, mask = l2)
84 if (ia(1).ne.0) STOP 24
85 c(1:2) = nan
86 ia = maxloc (c, mask = l)
87 if (ia(1).ne.0) STOP 25
88 ia = maxloc (c, mask = l2)
89 if (ia(1).ne.0) STOP 26
90 c(2) = 1.0
91 ia = maxloc (c, mask = l)
92 if (ia(1).ne.0) STOP 27
93 ia = maxloc (c, mask = l2)
94 if (ia(1).ne.0) STOP 28
95 c(2) = pinf
96 ia = maxloc (c, mask = l)
97 if (ia(1).ne.0) STOP 29
98 ia = maxloc (c, mask = l2)
99 if (ia(1).ne.0) STOP 30
100 l = .true.
101 l2(:) = .true.
102 a(:) = nan
103 ia = maxloc (a, mask = l)
104 if (ia(1).ne.1) STOP 31
105 ia = maxloc (a, mask = l2)
106 if (ia(1).ne.1) STOP 32
107 a(:) = minf
108 ia = maxloc (a, mask = l)
109 if (ia(1).ne.1) STOP 33
110 ia = maxloc (a, mask = l2)
111 if (ia(1).ne.1) STOP 34
112 a(1:2) = nan
113 ia = maxloc (a, mask = l)
114 if (ia(1).ne.3) STOP 35
115 ia = maxloc (a, mask = l2)
116 if (ia(1).ne.3) STOP 36
117 a(2) = 1.0
118 ia = maxloc (a, mask = l)
119 if (ia(1).ne.2) STOP 37
120 ia = maxloc (a, mask = l2)
121 if (ia(1).ne.2) STOP 38
122 a(2) = pinf
123 ia = maxloc (a, mask = l)
124 if (ia(1).ne.2) STOP 39
125 ia = maxloc (a, mask = l2)
126 if (ia(1).ne.2) STOP 40
127 c(:) = nan
128 ia = maxloc (c, mask = l)
129 if (ia(1).ne.1) STOP 41
130 ia = maxloc (c, mask = l2)
131 if (ia(1).ne.1) STOP 42
132 c(:) = minf
133 ia = maxloc (c, mask = l)
134 if (ia(1).ne.1) STOP 43
135 ia = maxloc (c, mask = l2)
136 if (ia(1).ne.1) STOP 44
137 c(1:2) = nan
138 ia = maxloc (c, mask = l)
139 if (ia(1).ne.3) STOP 45
140 ia = maxloc (c, mask = l2)
141 if (ia(1).ne.3) STOP 46
142 c(2) = 1.0
143 ia = maxloc (c, mask = l)
144 if (ia(1).ne.2) STOP 47
145 ia = maxloc (c, mask = l2)
146 if (ia(1).ne.2) STOP 48
147 c(2) = pinf
148 ia = maxloc (c, mask = l)
149 if (ia(1).ne.2) STOP 49
150 ia = maxloc (c, mask = l2)
151 if (ia(1).ne.2) STOP 50
152 deallocate (c)
153 allocate (c(-2:-3))
154 ia = maxloc (c)
155 if (ia(1).ne.0) STOP 51