diff --git a/src/cmd/compile/internal/gc/fmt.go b/src/cmd/compile/internal/gc/fmt.go
index be8a7ef6f58da7be8e0675ccfecfe17c02befabe..0fecb5d5951770b6b8ffe37aeef280762c7c7f9b 100644
--- a/src/cmd/compile/internal/gc/fmt.go
+++ b/src/cmd/compile/internal/gc/fmt.go
@@ -514,10 +514,10 @@ func (v Val) vconv(s fmt.State, flag FmtFlag) {
 	case *Mpint:
 		if !u.Rune {
 			if flag&FmtSharp != 0 {
-				fmt.Fprint(s, bconv(u, FmtSharp))
+				fmt.Fprint(s, bconv(u))
 				return
 			}
-			fmt.Fprint(s, bconv(u, 0))
+			fmt.Fprint(s, u.String())
 			return
 		}
 
diff --git a/src/cmd/compile/internal/gc/mpint.go b/src/cmd/compile/internal/gc/mpint.go
index de47205435459296c83773e9163b8737aaaa7219..4f49e1505d5e5fb9a1349dad1d7ed1b1f2a3a2bc 100644
--- a/src/cmd/compile/internal/gc/mpint.go
+++ b/src/cmd/compile/internal/gc/mpint.go
@@ -300,12 +300,9 @@ func (a *Mpint) SetString(as string) {
 }
 
 func (a *Mpint) String() string {
-	return bconv(a, 0)
+	return a.Val.String()
 }
 
-func bconv(xval *Mpint, flag FmtFlag) string {
-	if flag&FmtSharp != 0 {
-		return fmt.Sprintf("%#x", &xval.Val)
-	}
-	return xval.Val.String()
+func bconv(a *Mpint) string {
+	return fmt.Sprintf("%#x", &a.Val)
 }