mirror of
https://github.com/golang/go
synced 2025-05-04 03:11:34 +00:00
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>
This commit is contained in:
src/cmd/compile/internal
test/codegen
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user