diff options
| author | Keith Randall <khr@golang.org> | 2023-04-17 15:51:29 -0700 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2023-04-18 21:31:33 +0000 |
| commit | 6b165577fee2e9313bfd1ae2a07c89e41c86426e (patch) | |
| tree | ead9ec4604b91fb48ff31473bbe4bb9107383b19 /test/codegen | |
| parent | 48a1dcb92778a349e13bcb8be10a40047f0cf7d1 (diff) | |
| download | go-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.go | 41 |
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 +} |
