Fixes #74387
Even tho we are abusing unsafe.SliceData a bit here it's probably fine;
in case this test fail, it means some memory alias is happening
which is not good for GC purposes.
We don't care about false keep alives for stack locations tho.
Change-Id: I9434bad8c6d9fbc39c738690617dc7cf91d82aef
Reviewed-on: https://go-review.googlesource.com/c/go/+/684755
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Jorropo <jorropo.pgm@gmail.com>
}
}
+var leak *int
+
func TestIssue68488(t *testing.T) {
s := make([]int, 3)
clone := Clone(s[1:1])
case &s[0], &s[1], &s[2]:
t.Error("clone keeps alive s due to array overlap")
}
+ leak = &s[1] // see go.dev/issue/74387
}
// This test asserts the behavior when the primary slice operand is nil.