]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vet: teach asm checker about PEXTRD’s op size
authorJosh Bleecher Snyder <josharian@gmail.com>
Thu, 14 Apr 2016 16:39:40 +0000 (09:39 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Thu, 14 Apr 2016 17:58:51 +0000 (17:58 +0000)
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>
src/cmd/vet/asmdecl.go
src/cmd/vet/testdata/asm.go
src/cmd/vet/testdata/asm1.s

index 1b313cfe1b5883013a694c990404d93c74281094..389da353fc756841e5136a676759f495be5cd065 100644 (file)
@@ -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
index 9a3d5315ad56c05697981c9425d6515e7609864f..81947102ec83f6663a60271786f700caceacd554 100644 (file)
@@ -31,3 +31,5 @@ func nosplit(x int)
 func rodata(x int)
 func noptr(x int)
 func wrapper(x int)
+
+func f15271() (x uint32)
index 62f423cd8ba205e320bdb8a53b21ade781163d50..2c6f13b137c1cd24e2622db4226f5906f3edec34 100644 (file)
@@ -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