]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/gc: simplify mpgetflt (remove switch and indirection)
authorRobert Griesemer <gri@golang.org>
Fri, 22 May 2015 18:31:47 +0000 (11:31 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 22 May 2015 21:23:04 +0000 (21:23 +0000)
Change-Id: I6ae3534defdae9367e1b856dbb8e846c3263a758
Reviewed-on: https://go-review.googlesource.com/10358
Reviewed-by: Alan Donovan <adonovan@google.com>
src/cmd/compile/internal/gc/mparith3.go

index 58c129fccab503328442572f4f1de94ea67cb657..0e0b6264754afdde89bf0a1a5a9f65f63c6ccf38 100644 (file)
@@ -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) {