From: Robert Griesemer Date: Fri, 22 May 2015 18:31:47 +0000 (-0700) Subject: cmd/compile/internal/gc: simplify mpgetflt (remove switch and indirection) X-Git-Tag: go1.5beta1~487 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=75250a9f791e650bcf0fe16e9d3436314a94dde6;p=gostls13.git cmd/compile/internal/gc: simplify mpgetflt (remove switch and indirection) Change-Id: I6ae3534defdae9367e1b856dbb8e846c3263a758 Reviewed-on: https://go-review.googlesource.com/10358 Reviewed-by: Alan Donovan --- diff --git a/src/cmd/compile/internal/gc/mparith3.go b/src/cmd/compile/internal/gc/mparith3.go index 58c129fcca..0e0b626475 100644 --- a/src/cmd/compile/internal/gc/mparith3.go +++ b/src/cmd/compile/internal/gc/mparith3.go @@ -105,17 +105,8 @@ func mpcmpfltc(b *Mpflt, c float64) int { return mpcmpfltflt(b, &a) } -func mpgetfltN(a *Mpflt, prec int, bias int) float64 { - var x float64 - switch prec { - case 53: - x, _ = a.Val.Float64() - case 24: - x32, _ := a.Val.Float32() - x = float64(x32) - default: - panic("unreachable") - } +func mpgetflt(a *Mpflt) float64 { + x, _ := a.Val.Float64() // check for overflow if math.IsInf(x, 0) && nsavederrors+nerrors == 0 { @@ -125,12 +116,16 @@ func mpgetfltN(a *Mpflt, prec int, bias int) float64 { return x } -func mpgetflt(a *Mpflt) float64 { - return mpgetfltN(a, 53, -1023) -} - func mpgetflt32(a *Mpflt) float64 { - return mpgetfltN(a, 24, -127) + x32, _ := a.Val.Float32() + x := float64(x32) + + // check for overflow + if math.IsInf(x, 0) && nsavederrors+nerrors == 0 { + Yyerror("mpgetflt32 ovf") + } + + return x } func Mpmovecflt(a *Mpflt, c float64) {