Source file test/fixedbugs/issue50671.go
1 // run 2 3 // Copyright 2022 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 // Issue 50671: sign extension eliminated incorrectly on MIPS64. 8 9 package main 10 11 //go:noinline 12 func F(x int32) (float64, int64) { 13 a := float64(x) 14 b := int64(x) 15 return a, b 16 } 17 18 var a, b, c float64 19 20 // Poison some floating point registers with non-zero high bits. 21 // 22 //go:noinline 23 func poison(x float64) { 24 a = x - 123.45 25 b = a * 1.2 26 c = b + 3.4 27 } 28 29 func main() { 30 poison(333.3) 31 _, b := F(123) 32 if b != 123 { 33 panic("FAIL") 34 } 35 } 36