]> Cypherpunks repositories - gostls13.git/commitdiff
test/fixedbugs: add test for #19403
authorQuentin Smith <quentin@golang.org>
Mon, 6 Mar 2017 16:45:19 +0000 (11:45 -0500)
committerQuentin Smith <quentin@golang.org>
Mon, 6 Mar 2017 21:39:00 +0000 (21:39 +0000)
Change-Id: Ie52dac8eb4daed95e049ad74d5ae101e8a5cb854
Reviewed-on: https://go-review.googlesource.com/37725
Run-TryBot: Quentin Smith <quentin@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
test/fixedbugs/bug19403.go [new file with mode: 0644]

diff --git a/test/fixedbugs/bug19403.go b/test/fixedbugs/bug19403.go
new file mode 100644 (file)
index 0000000..94c0fb4
--- /dev/null
@@ -0,0 +1,134 @@
+// run
+
+// Copyright 2017 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test for golang.org/issue/19403.
+// F15 should not be clobbered by float-to-int conversion on ARM.
+// This test requires enough locals that can be put in registers that the compiler can choose to use F15.
+package main
+
+var count float32 = 16
+var i0 int
+var i1 int
+var i2 int
+var i3 int
+var i4 int
+var i5 int
+var i6 int
+var i7 int
+var i8 int
+var i9 int
+var i10 int
+var i11 int
+var i12 int
+var i13 int
+var i14 int
+var i15 int
+var i16 int
+
+func main() {
+       var f0 float32 = 0.0
+       var f1 float32 = 1.0
+       var f2 float32 = 2.0
+       var f3 float32 = 3.0
+       var f4 float32 = 4.0
+       var f5 float32 = 5.0
+       var f6 float32 = 6.0
+       var f7 float32 = 7.0
+       var f8 float32 = 8.0
+       var f9 float32 = 9.0
+       var f10 float32 = 10.0
+       var f11 float32 = 11.0
+       var f12 float32 = 12.0
+       var f13 float32 = 13.0
+       var f14 float32 = 14.0
+       var f15 float32 = 15.0
+       var f16 float32 = 16.0
+       i0 = int(f0)
+       i1 = int(f1)
+       i2 = int(f2)
+       i3 = int(f3)
+       i4 = int(f4)
+       i5 = int(f5)
+       i6 = int(f6)
+       i7 = int(f7)
+       i8 = int(f8)
+       i9 = int(f9)
+       i10 = int(f10)
+       i11 = int(f11)
+       i12 = int(f12)
+       i13 = int(f13)
+       i14 = int(f14)
+       i15 = int(f15)
+       i16 = int(f16)
+       if f16 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f15 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f14 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f13 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f12 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f11 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f10 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f9 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f8 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f7 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f6 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f5 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f4 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f3 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f2 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f1 != count {
+               panic("fail")
+       }
+       count -= 1
+       if f0 != count {
+               panic("fail")
+       }
+       count -= 1
+}