modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/fixedbugs/bug19403.go (about) 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. 10 package main 11 12 var count float32 = 16 13 var i0 int 14 var i1 int 15 var i2 int 16 var i3 int 17 var i4 int 18 var i5 int 19 var i6 int 20 var i7 int 21 var i8 int 22 var i9 int 23 var i10 int 24 var i11 int 25 var i12 int 26 var i13 int 27 var i14 int 28 var i15 int 29 var i16 int 30 31 func 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 }