aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2020-10-08 11:18:02 -0700
committerKeith Randall <khr@golang.org>2020-10-08 20:35:54 +0000
commita4b95cd092aa10b40c6be82a3e0bf1052e27122d (patch)
treeb114756c98ac859bbd96cb32db6eaf4d9b4b91d0 /test
parent46ab0c0c0474d38d9b924b2428f20c6da58c85fa (diff)
downloadgo-a4b95cd092aa10b40c6be82a3e0bf1052e27122d.tar.gz
go-a4b95cd092aa10b40c6be82a3e0bf1052e27122d.zip
cmd/compile: fix incorrect comparison folding
We lost a sign extension that was necessary. The nonnegative comparison didn't have the correct extension on it. If the larger constant is positive, but its shorter sign extension is negative, the rule breaks. Fixes #41872 Change-Id: I6592ef103f840fbb786bf8cb94fd8804c760c976 Reviewed-on: https://go-review.googlesource.com/c/go/+/260701 Trust: Keith Randall <khr@golang.org> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Alberto Donizetti <alb.donizetti@gmail.com>
Diffstat (limited to 'test')
-rw-r--r--test/fixedbugs/issue41872.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/fixedbugs/issue41872.go b/test/fixedbugs/issue41872.go
new file mode 100644
index 0000000000..837d61ae0a
--- /dev/null
+++ b/test/fixedbugs/issue41872.go
@@ -0,0 +1,26 @@
+// run
+
+// Copyright 2020 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
+
+//go:noinline
+func f8(x int32) bool {
+ return byte(x&0xc0) == 64
+}
+
+//go:noinline
+func f16(x int32) bool {
+ return uint16(x&0x8040) == 64
+}
+
+func main() {
+ if !f8(64) {
+ panic("wanted true, got false")
+ }
+ if !f16(64) {
+ panic("wanted true, got false")
+ }
+}