]> Cypherpunks repositories - gostls13.git/commitdiff
fix bug154; tweak bug153 exit status
authorRuss Cox <rsc@golang.org>
Wed, 27 May 2009 17:16:13 +0000 (10:16 -0700)
committerRuss Cox <rsc@golang.org>
Wed, 27 May 2009 17:16:13 +0000 (10:16 -0700)
R=ken
OCL=29448
CL=29448

src/cmd/gc/const.c
test/fixedbugs/bug154.go [moved from test/bugs/bug154.go with 100% similarity]
test/golden.out

index 5dbacece7e564158f90a83e16c7761d5c8b261a8..33acec6fc41cb29cb59382408be3b7add716c331 100644 (file)
@@ -13,16 +13,20 @@ static Val copyval(Val);
 
 /*
  * truncate float literal fv to 32-bit or 64-bit precision
- * according to type.
+ * according to type; return truncated value.
  */
-void
-truncfltlit(Mpflt *fv, Type *t)
+Mpflt*
+truncfltlit(Mpflt *oldv, Type *t)
 {
        double d;
        float f;
+       Mpflt *fv;
 
        if(t == T)
-               return;
+               return oldv;
+
+       fv = mal(sizeof *fv);
+       *fv = *oldv;
 
        // convert large precision literal floating
        // into limited precision (float64 or float32)
@@ -41,6 +45,7 @@ truncfltlit(Mpflt *fv, Type *t)
                mpmovecflt(fv, d);
                break;
        }
+       return fv;
 }
 
 /*
@@ -154,7 +159,7 @@ convlit1(Node *n, Type *t, int explicit)
                        else if(ct != CTFLT)
                                goto bad;
                        overflow(n->val, t);
-                       truncfltlit(n->val.u.fval, t);
+                       n->val.u.fval = truncfltlit(n->val.u.fval, t);
                } else if(et == TSTRING && ct == CTINT && explicit)
                        n->val = tostr(n->val);
                else
@@ -607,7 +612,7 @@ ret:
 
        // truncate precision for non-ideal float.
        if(v.ctype == CTFLT && n->type->etype != TIDEAL)
-               truncfltlit(v.u.fval, n->type);
+               n->val.u.fval = truncfltlit(v.u.fval, n->type);
        return;
 
 settrue:
similarity index 100%
rename from test/bugs/bug154.go
rename to test/fixedbugs/bug154.go
index 239ef80bff7731fded12ee9bfd1c511ea4d5f75c..6a7756babb46e7ca9fb6cddac8221c4c5549ae67 100644 (file)
@@ -112,13 +112,6 @@ BUG: should compile
 BUG: errchk: bugs/bug153.go:9: error message does not match 'nil'
 bugs/bug153.go:9: fatal error: dowidth: unknown type: E-34
 
-=========== bugs/bug154.go
-r0 = 3.141592
-r1 = 3.141592025756836
-r0 and r1 should be the same
-panic PC=xxx
-BUG: should not panic
-
 =========== fixedbugs/bug016.go
 fixedbugs/bug016.go:7: constant -3 overflows uint