aboutsummaryrefslogtreecommitdiff
path: root/test/fixedbugs/issue50671.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/fixedbugs/issue50671.go')
-rw-r--r--test/fixedbugs/issue50671.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/fixedbugs/issue50671.go b/test/fixedbugs/issue50671.go
new file mode 100644
index 0000000000..9f4742bfcd
--- /dev/null
+++ b/test/fixedbugs/issue50671.go
@@ -0,0 +1,35 @@
+// run
+
+// Copyright 2022 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.
+
+// Issue 50671: sign extension eliminated incorrectly on MIPS64.
+
+package main
+
+//go:noinline
+func F(x int32) (float64, int64) {
+ a := float64(x)
+ b := int64(x)
+ return a, b
+}
+
+var a, b, c float64
+
+// Poison some floating point registers with non-zero high bits.
+//
+//go:noinline
+func poison(x float64) {
+ a = x - 123.45
+ b = a * 1.2
+ c = b + 3.4
+}
+
+func main() {
+ poison(333.3)
+ _, b := F(123)
+ if b != 123 {
+ panic("FAIL")
+ }
+}