golang clobberdeadreg 代码
文件路径:/test/codegen/clobberdeadreg.go
/ asmcheck -gcflags=-clobberdeadreg
/ +build amd64
/ Copyright 2021 The Go Authors. All rights reserved.
/ Use of this source code is governed by a BSD-style
/ license that can be found in the LICENSE file.
package codegen
type S struct {
a, b, c, d, e, f int
}
func F(a, b, c int, d S) {
/ -2401018187971961171 is 0xdeaddeaddeaddead
/ amd64:`MOVQ\t\$-2401018187971961171, AX`, `MOVQ\t\$-2401018187971961171, BX`, `MOVQ\t\$-2401018187971961171, CX`
/ amd64:`MOVQ\t\$-2401018187971961171, DX`, `MOVQ\t\$-2401018187971961171, SI`, `MOVQ\t\$-2401018187971961171, DI`
/ amd64:`MOVQ\t\$-2401018187971961171, R8`, `MOVQ\t\$-2401018187971961171, R9`, `MOVQ\t\$-2401018187971961171, R10`
/ amd64:`MOVQ\t\$-2401018187971961171, R11`, `MOVQ\t\$-2401018187971961171, R12`, `MOVQ\t\$-2401018187971961171, R13`
/ amd64:-`MOVQ\t\$-2401018187971961171, BP` / frame pointer is not clobbered
StackArgsCall([10]int{a, b, c})
/ amd64:`MOVQ\t\$-2401018187971961171, R12`, `MOVQ\t\$-2401018187971961171, R13`, `MOVQ\t\$-2401018187971961171, DX`
/ amd64:-`MOVQ\t\$-2401018187971961171, AX`, -`MOVQ\t\$-2401018187971961171, R11` / register args are not clobbered
RegArgsCall(a, b, c, d)
}
/go:noinline
func StackArgsCall([10]int) {}
/go:noinline
/go:registerparams
func RegArgsCall(int, int, int, S) {}