From: David Chase Date: Thu, 5 May 2016 20:35:10 +0000 (-0700) Subject: cmd/compile: repair MININT conversion bug in arm softfloat X-Git-Tag: go1.7beta1~313 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=6db98a3c51549eb5e1e481e9bca6ede7e8e15f54;p=gostls13.git cmd/compile: repair MININT conversion bug in arm softfloat Negative-case conversion code was wrong for minimum int32, used negate-then-widen instead of widen-then-negate. Test already exists; this fixes the failure. Fixes #15563. Change-Id: I4b0b3ae8f2c9714bdcc405d4d0b1502ccfba2b40 Reviewed-on: https://go-review.googlesource.com/22830 Run-TryBot: David Chase Reviewed-by: Keith Randall TryBot-Result: Gobot Gobot --- diff --git a/src/runtime/softfloat_arm.go b/src/runtime/softfloat_arm.go index 648b2e1169..5f609c80d3 100644 --- a/src/runtime/softfloat_arm.go +++ b/src/runtime/softfloat_arm.go @@ -530,7 +530,7 @@ execute: case 0xeeb80ac0: // D[regd] = S[regm] (MOVWF) cmp := int32(m.freglo[regm]) if cmp < 0 { - fputf(regd, f64to32(fintto64(int64(-cmp)))) + fputf(regd, f64to32(fintto64(-int64(cmp)))) m.freglo[regd] ^= 0x80000000 } else { fputf(regd, f64to32(fintto64(int64(cmp)))) @@ -552,7 +552,7 @@ execute: case 0xeeb80bc0: // D[regd] = S[regm] (MOVWD) cmp := int32(m.freglo[regm]) if cmp < 0 { - fputd(regd, fintto64(int64(-cmp))) + fputd(regd, fintto64(-int64(cmp))) m.freghi[regd] ^= 0x80000000 } else { fputd(regd, fintto64(int64(cmp)))