1
0
mirror of https://github.com/golang/go synced 2024-11-23 05:00:07 -07:00
go/test
Russ Cox 60be4a2450 cmd/gc: fix float32 const conversion and printing of big float consts
The float32 const conversion used to round to float64
and then use the hardware to round to float32.
Even though there was a range check before this
conversion, the double rounding introduced inaccuracy:
the round to float64 might round the value further away
from the float32 range, reaching a float64 value that
could not actually be rounded to float32. The hardware
appears to give us 0 in that case, but it is probably undefined.
Double rounding also meant that the wrong value might
be used for certain border cases.

Do the rounding the float32 ourselves, just as we already
did the rounding to float64. This makes the conversion
precise and also makes the conversion match the range check.

Finally, add some code to print very large (bigger than float64)
floating point constants in decimal floating point notation instead
of falling back to the precise but human-unreadable binary floating
point notation.

Fixes #8015.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews, r
https://golang.org/cl/100580044
2014-05-19 22:57:59 -04:00
..
bench test/bench/shootout: support windows 2014-05-09 14:34:50 -07:00
bugs
chan test/chan: avoid wrap-around in memstats comparison 2013-09-20 17:27:56 -07:00
ddd2.dir
dwarf test: make rundir match compiledir/errorcheckdir. 2013-01-11 22:00:48 +01:00
fixedbugs cmd/gc: fix <-<-expr 2014-05-19 15:08:04 -04:00
import2.dir
import4.dir test: match gccgo import error messages 2013-12-12 19:02:11 -08:00
interface cmd/gc: don't attempt to generate wrappers for blank interface methods 2013-08-19 11:53:34 +10:00
ken
method4.dir cmd/gc: do not omit wrapper for expression (interface{...}).F 2014-01-07 13:26:48 +01:00
safe test: adapt old-style tests to new flag parsing. 2013-01-11 22:05:46 +01:00
stress test/stress: fix a goroutine leak in threadRing stresstest 2013-06-03 07:07:31 -07:00
syntax test: match gccgo error messages 2013-12-12 17:18:12 -08:00
64bit.go cmd/gc: Error out on division by constant zero. 2013-01-30 20:21:08 +01:00
235.go
alias1.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
alias.go
append.go
args.go
assign1.go
assign.go
bigalg.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
bigmap.go
blank1.go test: match gccgo error messages for blank1.go 2013-09-28 15:19:05 -07:00
blank.go test: revert changes made for Go SSA interpreter test. 2013-10-08 14:36:20 -04:00
bom.go
bombad.go
bounds.go
chancap.go
char_lit1.go
char_lit.go
closedchan.go
closure.go
cmp6.go cmd/gc: do not consider length zero arrays as comparable. 2014-01-31 00:30:56 +01:00
cmp.go cmd/gc: do not nop-convert equivalent but different interface types. 2014-02-27 08:07:50 +01:00
cmplx.go cmd/gc: reject complex calls with mismatched argument types. 2013-03-11 22:55:14 +01:00
cmplxdivide1.go
cmplxdivide.c
cmplxdivide.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
complit1.go
complit.go
compos.go
const1.go test: match gccgo error messages 2013-12-12 17:18:12 -08:00
const2.go
const3.go
const4.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
const5.go cmd/gc: reject builtin function calls in len(fixed array) constants 2014-04-03 19:04:33 -04:00
const6.go test: match gccgo error strings. 2013-06-26 18:05:02 +02:00
const.go exp/ssa/interp: (#6 of 5): test interpretation of SSA form of $GOROOT/test/*.go. 2013-02-21 12:48:38 -05:00
convert1.go
convert3.go
convert.go
convlit1.go
convlit.go
convT2X.go
copy.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
crlf.go
ddd1.go
ddd2.go
ddd.go
decl.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
declbad.go
defer.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
deferfin.go runtime: combine small NoScan allocations 2014-01-24 22:35:11 +04:00
deferprint.go
deferprint.out
divide.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
divmod.go all: fix a few spelling errors in source comments 2013-12-27 08:59:02 -08:00
empty.go
env.go
eof1.go
eof.go
errchk test/errchk: use "#!/usr/bin/env perl" shebang line 2013-05-23 04:41:22 +08:00
escape2.go cmd/gc: fix escape analysis for slice of array 2014-05-12 14:45:05 -04:00
escape3.go
escape4.go
escape5.go cmd/gc: distinguish unnamed vs blank-named return variables better 2014-02-13 20:59:39 -05:00
escape.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
float_lit2.go cmd/gc: fix float32 const conversion and printing of big float consts 2014-05-19 22:57:59 -04:00
float_lit3.go cmd/gc: fix float32 const conversion and printing of big float consts 2014-05-19 22:57:59 -04:00
float_lit.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
floatcmp.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
for.go
func1.go cmd/gc: ensure unique parameter and result names in function types 2013-03-15 15:24:13 -04:00
func2.go
func3.go
func4.go
func5.go
func6.go
func7.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
func8.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
func.go
funcdup2.go test: match gccgo error messages 2013-12-12 17:18:12 -08:00
funcdup.go test: match gccgo error messages 2013-12-12 17:18:12 -08:00
gc1.go
gc2.go
gc.go
gcstring.go runtime: fix empty string handling in garbage collector 2014-03-11 23:58:39 -04:00
golden.out
goprint.go test: make goprint.go wait longer for go its routine to execute 2013-04-12 16:04:19 -07:00
goprint.out
goto.go
helloworld.go
helloworld.out
if.go
import1.go test: match gccgo import error messages 2013-12-12 19:02:11 -08:00
import2.go
import4.go
import5.go
import.go
index0.go
index1.go
index2.go
index.go test: recognize gccgo error message in index.go 2013-09-27 20:38:52 -07:00
indirect1.go
indirect.go
init1.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
init.go
initcomma.go
initialize.go
initializerr.go
int_lit.go
intcvt.go
iota.go
label1.go
label.go
linkx.go
literal.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
live1.go cmd/gc: correct liveness for fat variables 2014-02-15 10:58:55 -05:00
live.go cmd/gc, runtime: make GODEBUG=gcdead=1 mode work with liveness 2014-04-03 20:33:25 -04:00
mallocfin.go
map1.go
map.go test: fix flaky NaN-key map complexity test 2013-04-07 11:56:15 -07:00
mapnan.go test/mapnan: use time.Now instead of syscall.Getrusage 2013-10-22 18:33:37 -04:00
method1.go
method2.go cmd/gc: fix method values whose receiver is an unnamed interface. 2013-08-29 10:00:58 +02:00
method3.go
method4.go
method5.go cmd/gc: implement method values 2013-03-20 17:11:09 -04:00
method.go test: a number of fixes. 2013-02-11 18:20:52 -05:00
named1.go
named.go
nil.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
nilcheck.go cmd/gc: &x panics if x does 2013-08-15 14:38:32 -04:00
nilptr2.go test: revert changes made for Go SSA interpreter test. 2013-10-08 14:36:20 -04:00
nilptr3.go cmd/gc: correct handling of globals, func args, results 2014-05-15 15:34:53 -04:00
nilptr4.go cmd/gc: fix bad checknil with ints on 32 bit compilers 2014-02-26 12:25:13 -08:00
nilptr.go test/nilptr: add more tests 2013-09-05 23:06:34 -04:00
nosplit.go liblink, cmd/ld: reenable nosplit checking and test 2014-04-16 22:08:00 -04:00
nul1.go
parentype.go
peano.go
printbig.go
printbig.out
range.go test: a number of fixes. 2013-02-11 18:20:52 -05:00
recover1.go
recover2.go
recover3.go tests: remove two misuses of nil pointers 2013-08-15 11:51:04 -04:00
recover.go test: disable failing tests under ssa/interp. 2013-09-18 14:44:57 -04:00
rename1.go
rename.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00
reorder2.go cmd/gc: shorten temporary lifetimes when possible 2014-04-01 13:31:38 -04:00
reorder.go test: a number of fixes. 2013-02-11 18:20:52 -05:00
return.go test: add cases to return.go that gccgo got wrong 2013-08-07 11:31:01 -07:00
rotate0.go test: add rotate.go and fixedbugs/bug313 2013-01-11 22:42:55 +01:00
rotate1.go test: add rotate.go and fixedbugs/bug313 2013-01-11 22:42:55 +01:00
rotate2.go test: add rotate.go and fixedbugs/bug313 2013-01-11 22:42:55 +01:00
rotate3.go test: add rotate.go and fixedbugs/bug313 2013-01-11 22:42:55 +01:00
rotate.go test: add rotate.go and fixedbugs/bug313 2013-01-11 22:42:55 +01:00
run test/run: add /usr/pkg/bin to PATH. 2014-03-03 02:16:15 -05:00
run.go test/run: make errorcheck tests faster 2014-03-11 23:58:24 -04:00
rune.go
runtime.go
shift1.go test/shift1.go: recognize gccgo errors 2013-06-26 08:23:52 -07:00
shift2.go test: add shift expression incorrectly rejected by gccgo. 2013-06-25 08:06:34 +02:00
sieve.go
sigchld.go test: skip SIGCHLD test on Plan 9 2014-01-29 09:28:23 +01:00
sigchld.out
simassign.go
sinit.go
sizeof.go test: correct sizeof.go. 2013-06-02 19:10:11 +02:00
slice3.go cmd/gc: support x[i:j:k] 2013-07-01 20:32:36 -04:00
slice3err.go test: match gccgo error messages 2013-12-12 17:18:12 -08:00
solitaire.go
stack.go
string_lit.go test: add []rune case to string_lit.go 2013-12-12 17:17:02 -08:00
stringrange.go
struct0.go
switch3.go
switch4.go cmd/gc: disallow fallthrough in final case of switch 2013-03-15 00:35:09 -04:00
switch.go cmd/gc: disallow fallthrough in final case of switch 2013-03-15 00:35:09 -04:00
testlib test/run: process build tags like go/build 2013-08-13 12:25:41 -04:00
tinyfin.go runtime: combine small NoScan allocations 2014-01-24 22:35:11 +04:00
torture.go
turing.go
typecheck.go cmd/gc: silence assignment errors to undefined symbols 2014-01-03 21:03:20 +01:00
typeswitch1.go
typeswitch2.go
typeswitch3.go
typeswitch.go
undef.go
utf.go
varerr.go
varinit.go
zerodivide.go test: ensure all failing tests exit nonzero. 2013-02-12 13:17:49 -05:00