1
0
mirror of https://github.com/golang/go synced 2024-09-23 21:30:18 -06:00

cmd/compile: add handling for new floating-point comparisons flags

The CL 164718 adds new condition flags for floating-point comparisons
in arm64 backend, but dose not add the handling in rewrite.go for
corresponding Ops, which causes issue 30679. And this CL fixes this
issue.

Fixes #30679

Change-Id: I8acc749f78227c3e9e74fa7938f05fb442fb62c6
Reviewed-on: https://go-review.googlesource.com/c/go/+/166579
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
fanzha02 2019-03-11 03:51:06 +00:00 committed by Cherry Zhang
parent ef891e1c83
commit a85afef277
2 changed files with 34 additions and 0 deletions

View File

@ -730,6 +730,14 @@ func arm64Negate(op Op) Op {
return OpARM64NotEqual
case OpARM64NotEqual:
return OpARM64Equal
case OpARM64LessThanF:
return OpARM64GreaterEqualF
case OpARM64GreaterThanF:
return OpARM64LessEqualF
case OpARM64LessEqualF:
return OpARM64GreaterThanF
case OpARM64GreaterEqualF:
return OpARM64LessThanF
default:
panic("unreachable")
}
@ -762,6 +770,14 @@ func arm64Invert(op Op) Op {
return OpARM64LessEqualU
case OpARM64Equal, OpARM64NotEqual:
return op
case OpARM64LessThanF:
return OpARM64GreaterThanF
case OpARM64GreaterThanF:
return OpARM64LessThanF
case OpARM64LessEqualF:
return OpARM64GreaterEqualF
case OpARM64GreaterEqualF:
return OpARM64LessEqualF
default:
panic("unreachable")
}

View File

@ -0,0 +1,18 @@
// compile
// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
func main() {
var f float64
var p, q *float64
p = &f
if *q > 0 {
p = q
}
_ = *p
}