diff options
| author | Josh Bleecher Snyder <josharian@gmail.com> | 2016-04-14 09:39:40 -0700 |
|---|---|---|
| committer | Josh Bleecher Snyder <josharian@gmail.com> | 2016-04-14 17:58:51 +0000 |
| commit | 67cdec00c256d817fc3d2c099fa1830c8f446923 (patch) | |
| tree | 916a2ad100253f6ae53bf1abb09efa02bba173fa | |
| parent | 045411e6f28c64e6448a2432fa652cc80ca18f31 (diff) | |
| download | go-67cdec00c256d817fc3d2c099fa1830c8f446923.tar.xz | |
cmd/vet: teach asm checker about PEXTRD’s op size
Fixes #15271
Change-Id: I28e3fb5bde1e6fd5b263b1434873b8ce051aee97
Reviewed-on: https://go-review.googlesource.com/22083
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
| -rw-r--r-- | src/cmd/vet/asmdecl.go | 5 | ||||
| -rw-r--r-- | src/cmd/vet/testdata/asm.go | 2 | ||||
| -rw-r--r-- | src/cmd/vet/testdata/asm1.s | 11 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/cmd/vet/asmdecl.go b/src/cmd/vet/asmdecl.go index 1b313cfe1b..389da353fc 100644 --- a/src/cmd/vet/asmdecl.go +++ b/src/cmd/vet/asmdecl.go @@ -559,6 +559,11 @@ func asmCheckVar(badf func(string, ...interface{}), fn *asmFunc, line, expr stri src = 8 break } + if strings.HasPrefix(op, "P") && strings.HasSuffix(op, "RD") { + // PINSRD, PEXTRD, etc + src = 4 + break + } if strings.HasPrefix(op, "F") && (strings.HasSuffix(op, "F") || strings.HasSuffix(op, "FP")) { // FMOVFP, FXCHF, etc src = 4 diff --git a/src/cmd/vet/testdata/asm.go b/src/cmd/vet/testdata/asm.go index 9a3d5315ad..81947102ec 100644 --- a/src/cmd/vet/testdata/asm.go +++ b/src/cmd/vet/testdata/asm.go @@ -31,3 +31,5 @@ func nosplit(x int) func rodata(x int) func noptr(x int) func wrapper(x int) + +func f15271() (x uint32) diff --git a/src/cmd/vet/testdata/asm1.s b/src/cmd/vet/testdata/asm1.s index 62f423cd8b..2c6f13b137 100644 --- a/src/cmd/vet/testdata/asm1.s +++ b/src/cmd/vet/testdata/asm1.s @@ -252,3 +252,14 @@ TEXT ·returnnamed(SB),0,$0-41 TEXT ·returnintmissing(SB),0,$0-8 RET // ERROR "RET without writing to 8-byte ret\+0\(FP\)" + + +// issue 15271 +TEXT ·f15271(SB), NOSPLIT, $0-4 + // Stick 123 into the low 32 bits of X0. + MOVQ $123, AX + PINSRD $0, AX, X0 + + // Return them. + PEXTRD $0, X0, x+0(FP) + RET |
