aboutsummaryrefslogtreecommitdiff
path: root/test/codegen
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2025-09-22 10:57:29 -0400
committerCherry Mui <cherryyz@google.com>2025-09-23 08:05:41 -0700
commit2b50ffe172ee638a88e2750481eaeeac7d3bedfa (patch)
tree4f89092a95e012259057717868b9a45aca92178e /test/codegen
parent2d8cb80d7c4af3dbcb507783938ceb0e071f64e3 (diff)
downloadgo-2b50ffe172ee638a88e2750481eaeeac7d3bedfa.tar.xz
[dev.simd] cmd/compile: remove stores to unread parameters
Currently, we remove stores to local variables that are not read. We don't do that for arguments. But arguments and locals are essentially the same. Arguments are passed by value, and are not expected to be read in the caller's frame. So we can remove the writes to them as well. One exception is the cgo_unsafe_arg directive, which makes all the arguments effectively address-taken. cgo_unsafe_arg implies ABI0, so we just skip ABI0 functions' arguments. Change-Id: I8999fc50da6a87f22c1ec23e9a0c15483b6f7df8 Reviewed-on: https://go-review.googlesource.com/c/go/+/705815 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: David Chase <drchase@google.com> Reviewed-by: Junyang Shao <shaojunyang@google.com>
Diffstat (limited to 'test/codegen')
-rw-r--r--test/codegen/stack.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/test/codegen/stack.go b/test/codegen/stack.go
index 4e45d68f38..59284ae888 100644
--- a/test/codegen/stack.go
+++ b/test/codegen/stack.go
@@ -168,3 +168,9 @@ func getp1() *[4]int {
func getp2() *[4]int {
return nil
}
+
+// Store to an argument without read can be removed.
+func storeArg(a [2]int) {
+ // amd64:-`MOVQ\t\$123,.*\.a\+\d+\(SP\)`
+ a[1] = 123
+}