mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00: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:
parent
ef891e1c83
commit
a85afef277
@ -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")
|
||||
}
|
||||
|
18
test/fixedbugs/issue30679.go
Normal file
18
test/fixedbugs/issue30679.go
Normal 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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user