1// run
2
3// Copyright 2017 The Go Authors.  All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// Test for golang.org/issue/19403.
8// F15 should not be clobbered by float-to-int conversion on ARM.
9// This test requires enough locals that can be put in registers that the compiler can choose to use F15.
10package main
11
12var count float32 = 16
13var i0 int
14var i1 int
15var i2 int
16var i3 int
17var i4 int
18var i5 int
19var i6 int
20var i7 int
21var i8 int
22var i9 int
23var i10 int
24var i11 int
25var i12 int
26var i13 int
27var i14 int
28var i15 int
29var i16 int
30
31func main() {
32	var f0 float32 = 0.0
33	var f1 float32 = 1.0
34	var f2 float32 = 2.0
35	var f3 float32 = 3.0
36	var f4 float32 = 4.0
37	var f5 float32 = 5.0
38	var f6 float32 = 6.0
39	var f7 float32 = 7.0
40	var f8 float32 = 8.0
41	var f9 float32 = 9.0
42	var f10 float32 = 10.0
43	var f11 float32 = 11.0
44	var f12 float32 = 12.0
45	var f13 float32 = 13.0
46	var f14 float32 = 14.0
47	var f15 float32 = 15.0
48	var f16 float32 = 16.0
49	i0 = int(f0)
50	i1 = int(f1)
51	i2 = int(f2)
52	i3 = int(f3)
53	i4 = int(f4)
54	i5 = int(f5)
55	i6 = int(f6)
56	i7 = int(f7)
57	i8 = int(f8)
58	i9 = int(f9)
59	i10 = int(f10)
60	i11 = int(f11)
61	i12 = int(f12)
62	i13 = int(f13)
63	i14 = int(f14)
64	i15 = int(f15)
65	i16 = int(f16)
66	if f16 != count {
67		panic("fail")
68	}
69	count -= 1
70	if f15 != count {
71		panic("fail")
72	}
73	count -= 1
74	if f14 != count {
75		panic("fail")
76	}
77	count -= 1
78	if f13 != count {
79		panic("fail")
80	}
81	count -= 1
82	if f12 != count {
83		panic("fail")
84	}
85	count -= 1
86	if f11 != count {
87		panic("fail")
88	}
89	count -= 1
90	if f10 != count {
91		panic("fail")
92	}
93	count -= 1
94	if f9 != count {
95		panic("fail")
96	}
97	count -= 1
98	if f8 != count {
99		panic("fail")
100	}
101	count -= 1
102	if f7 != count {
103		panic("fail")
104	}
105	count -= 1
106	if f6 != count {
107		panic("fail")
108	}
109	count -= 1
110	if f5 != count {
111		panic("fail")
112	}
113	count -= 1
114	if f4 != count {
115		panic("fail")
116	}
117	count -= 1
118	if f3 != count {
119		panic("fail")
120	}
121	count -= 1
122	if f2 != count {
123		panic("fail")
124	}
125	count -= 1
126	if f1 != count {
127		panic("fail")
128	}
129	count -= 1
130	if f0 != count {
131		panic("fail")
132	}
133	count -= 1
134}
135