aboutsummaryrefslogtreecommitdiff
path: root/test/codegen
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2023-04-17 15:51:29 -0700
committerKeith Randall <khr@golang.org>2023-04-18 21:31:33 +0000
commit6b165577fee2e9313bfd1ae2a07c89e41c86426e (patch)
treeead9ec4604b91fb48ff31473bbe4bb9107383b19 /test/codegen
parent48a1dcb92778a349e13bcb8be10a40047f0cf7d1 (diff)
downloadgo-6b165577fee2e9313bfd1ae2a07c89e41c86426e.tar.xz
cmd/compile: remove memequal call from string compares in more cases
Add more rules to ensure that order doesn't matter. Add memequal 0 rule. Try to use a constant argument to memequal when one is available. Fixes #59684 Change-Id: I36e85ffbd949396ed700ed6e8ec2bc3ae013f5d2 Reviewed-on: https://go-review.googlesource.com/c/go/+/485535 Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'test/codegen')
-rw-r--r--test/codegen/comparisons.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/codegen/comparisons.go b/test/codegen/comparisons.go
index 6ffc73482a..071b68facf 100644
--- a/test/codegen/comparisons.go
+++ b/test/codegen/comparisons.go
@@ -747,3 +747,44 @@ func cmpToCmnGreaterThanEqual(a, b, c, d int) int {
}
return c1 + c2 + c3 + c4
}
+
+func cmp1(val string) bool {
+ var z string
+ // amd64:-".*memequal"
+ return z == val
+}
+
+func cmp2(val string) bool {
+ var z string
+ // amd64:-".*memequal"
+ return val == z
+}
+
+func cmp3(val string) bool {
+ z := "food"
+ // amd64:-".*memequal"
+ return z == val
+}
+
+func cmp4(val string) bool {
+ z := "food"
+ // amd64:-".*memequal"
+ return val == z
+}
+
+func cmp5[T comparable](val T) bool {
+ var z T
+ // amd64:-".*memequal"
+ return z == val
+}
+
+func cmp6[T comparable](val T) bool {
+ var z T
+ // amd64:-".*memequal"
+ return val == z
+}
+
+func cmp7() {
+ cmp5[string]("") // force instantiation
+ cmp6[string]("") // force instantiation
+}