mirror of
https://github.com/golang/go.git
synced 2025-05-07 08:32:59 +00:00
[dev.ssa] cmd/compile/internal/ssa: treat -0.0 literal as 0.0
This matches existing behavior, see issue #2196 Change-Id: Ifa9359b7c821115389f337a57de355c5ec23be8f Reviewed-on: https://go-review.googlesource.com/14261 Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
2a29576562
commit
adba6c4fdf
@ -1254,9 +1254,11 @@ func (s *state) expr(n *Node) *ssa.Value {
|
||||
f := n.Val().U.(*Mpflt)
|
||||
switch n.Type.Size() {
|
||||
case 4:
|
||||
return s.constFloat32(n.Type, mpgetflt32(f))
|
||||
// -0.0 literals need to be treated as if they were 0.0, adding 0.0 here
|
||||
// accomplishes this while not affecting other values.
|
||||
return s.constFloat32(n.Type, mpgetflt32(f)+0.0)
|
||||
case 8:
|
||||
return s.constFloat64(n.Type, mpgetflt(f))
|
||||
return s.constFloat64(n.Type, mpgetflt(f)+0.0)
|
||||
default:
|
||||
s.Fatalf("bad float size %d", n.Type.Size())
|
||||
return nil
|
||||
@ -1269,16 +1271,18 @@ func (s *state) expr(n *Node) *ssa.Value {
|
||||
case 8:
|
||||
{
|
||||
pt := Types[TFLOAT32]
|
||||
// -0.0 literals need to be treated as if they were 0.0, adding 0.0 here
|
||||
// accomplishes this while not affecting other values.
|
||||
return s.newValue2(ssa.OpComplexMake, n.Type,
|
||||
s.constFloat32(pt, mpgetflt32(r)),
|
||||
s.constFloat32(pt, mpgetflt32(i)))
|
||||
s.constFloat32(pt, mpgetflt32(r)+0.0),
|
||||
s.constFloat32(pt, mpgetflt32(i)+0.0))
|
||||
}
|
||||
case 16:
|
||||
{
|
||||
pt := Types[TFLOAT64]
|
||||
return s.newValue2(ssa.OpComplexMake, n.Type,
|
||||
s.constFloat64(pt, mpgetflt(r)),
|
||||
s.constFloat64(pt, mpgetflt(i)))
|
||||
s.constFloat64(pt, mpgetflt(r)+0.0),
|
||||
s.constFloat64(pt, mpgetflt(i)+0.0))
|
||||
}
|
||||
default:
|
||||
s.Fatalf("bad float size %d", n.Type.Size())
|
||||
|
@ -636,13 +636,7 @@ func (t *test) run() {
|
||||
}
|
||||
|
||||
case "run":
|
||||
useTmp = false
|
||||
switch t.gofile {
|
||||
case "bug434.go":
|
||||
// TODO fix this failure
|
||||
default:
|
||||
ssaMain = true
|
||||
}
|
||||
out, err := runcmd(append([]string{"go", "run", t.goFileName()}, args...)...)
|
||||
if err != nil {
|
||||
t.err = err
|
||||
|
Loading…
x
Reference in New Issue
Block a user