]> Cypherpunks repositories - gostls13.git/commit
cmd/compile/internal/ssa: eliminate string copies for calls to unique.Make
authorJake Bailey <jacob.b.bailey@gmail.com>
Tue, 13 May 2025 03:39:54 +0000 (20:39 -0700)
committerCherry Mui <cherryyz@google.com>
Thu, 22 May 2025 03:20:31 +0000 (20:20 -0700)
commit27ff0f249c33fdfa9c8e17a0367b46561236f36c
tree49cc8d5460b3a20df4dccffb314d6270078da327
parentd2db2372a2fd79d539719fa13422d83d6fdfcda1
cmd/compile/internal/ssa: eliminate string copies for calls to unique.Make

unique.Make always copies strings passed into it, so it's safe to not
copy byte slices converted to strings either. Handle this just like map
accesses with string(b) as keys.

This CL only handles unique.Make(string(b)), not nested cases like
unique.Make([2]string{string(b1), string(b2)}); this could be done in a
followup CL but the map lookup code in walk is sufficiently different
than the call handling code that I didn't attempt it. (SSA is much
easier).

Fixes #71926

Change-Id: Ic2f82f2f91963d563b4ddb1282bd49fc40da8b85
Reviewed-on: https://go-review.googlesource.com/c/go/+/672135
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
src/cmd/compile/internal/ssa/_gen/generic.rules
src/cmd/compile/internal/ssa/rewritegeneric.go
src/unique/handle_test.go
test/codegen/unique.go [new file with mode: 0644]