]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: add handling for new floating-point comparisons flags
authorfanzha02 <fannie.zhang@arm.com>
Mon, 11 Mar 2019 03:51:06 +0000 (03:51 +0000)
committerCherry Zhang <cherryyz@google.com>
Tue, 12 Mar 2019 14:01:26 +0000 (14:01 +0000)
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>

src/cmd/compile/internal/ssa/rewrite.go
test/fixedbugs/issue30679.go [new file with mode: 0644]

index dbbb33c1711ced119849c24a48359b7aa84916e2..81658522634e9dcbe851fdccf3fadc4aa7ee3796 100644 (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")
        }
diff --git a/test/fixedbugs/issue30679.go b/test/fixedbugs/issue30679.go
new file mode 100644 (file)
index 0000000..4d0df18
--- /dev/null
@@ -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
+}