mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +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
|
return OpARM64NotEqual
|
||||||
case OpARM64NotEqual:
|
case OpARM64NotEqual:
|
||||||
return OpARM64Equal
|
return OpARM64Equal
|
||||||
|
case OpARM64LessThanF:
|
||||||
|
return OpARM64GreaterEqualF
|
||||||
|
case OpARM64GreaterThanF:
|
||||||
|
return OpARM64LessEqualF
|
||||||
|
case OpARM64LessEqualF:
|
||||||
|
return OpARM64GreaterThanF
|
||||||
|
case OpARM64GreaterEqualF:
|
||||||
|
return OpARM64LessThanF
|
||||||
default:
|
default:
|
||||||
panic("unreachable")
|
panic("unreachable")
|
||||||
}
|
}
|
||||||
@ -762,6 +770,14 @@ func arm64Invert(op Op) Op {
|
|||||||
return OpARM64LessEqualU
|
return OpARM64LessEqualU
|
||||||
case OpARM64Equal, OpARM64NotEqual:
|
case OpARM64Equal, OpARM64NotEqual:
|
||||||
return op
|
return op
|
||||||
|
case OpARM64LessThanF:
|
||||||
|
return OpARM64GreaterThanF
|
||||||
|
case OpARM64GreaterThanF:
|
||||||
|
return OpARM64LessThanF
|
||||||
|
case OpARM64LessEqualF:
|
||||||
|
return OpARM64GreaterEqualF
|
||||||
|
case OpARM64GreaterEqualF:
|
||||||
|
return OpARM64LessEqualF
|
||||||
default:
|
default:
|
||||||
panic("unreachable")
|
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