aboutsummaryrefslogtreecommitdiff
path: root/test/escape_calls.go
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2023-12-05 12:56:04 -0800
committerGopher Robot <gobot@golang.org>2023-12-05 22:06:07 +0000
commit34416d7f6f93cd6562636e311c362ebe421f1a4c (patch)
treed39955220aad77e56c87a1f9435ca5a63875d1c8 /test/escape_calls.go
parented30ee6c56505905880e63266641de32666e1c0b (diff)
downloadgo-34416d7f6f93cd6562636e311c362ebe421f1a4c.tar.gz
go-34416d7f6f93cd6562636e311c362ebe421f1a4c.zip
cmd/compile: fix escape analysis of string min/max
When I was plumbing min/max support through the compiler, I was thinking mostly about numeric argument types. As a result, I forgot that escape analysis would need to be aware that min/max can operate on string values, which contain pointers. Fixes #64565. Change-Id: I36127ce5a2da942401910fa0f9de922726c9f94d Reviewed-on: https://go-review.googlesource.com/c/go/+/547715 Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com> Auto-Submit: Matthew Dempsky <mdempsky@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'test/escape_calls.go')
-rw-r--r--test/escape_calls.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/test/escape_calls.go b/test/escape_calls.go
index aa7c7f516c..5424c006ee 100644
--- a/test/escape_calls.go
+++ b/test/escape_calls.go
@@ -52,3 +52,10 @@ func bar() {
s := "string"
f([]string{s}) // ERROR "\[\]string{...} escapes to heap"
}
+
+func strmin(a, b, c string) string { // ERROR "leaking param: a to result ~r0 level=0" "leaking param: b to result ~r0 level=0" "leaking param: c to result ~r0 level=0"
+ return min(a, b, c)
+}
+func strmax(a, b, c string) string { // ERROR "leaking param: a to result ~r0 level=0" "leaking param: b to result ~r0 level=0" "leaking param: c to result ~r0 level=0"
+ return max(a, b, c)
+}