]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: fix no-op instruction used by s390x
authorKeith Randall <keithr@alum.mit.edu>
Mon, 31 Dec 2018 23:03:33 +0000 (15:03 -0800)
committerKeith Randall <khr@golang.org>
Thu, 3 Jan 2019 17:00:47 +0000 (17:00 +0000)
CL 152537 introduced a new use for ginsnop, the arch-dependent
routine that generates nops. The previous s390x nop clobbered flags.
It turns out the previous uses of this nop did not require flags
to be preserved, but the new use does.

Use a real nop: the 4-byte preferred nop.

Fixes #29453

Change-Id: I95310dfdd831932e26f5d5b6608324687f4c3162
Reviewed-on: https://go-review.googlesource.com/c/155926
Reviewed-by: Michael Munday <mike.munday@ibm.com>
src/cmd/compile/internal/s390x/ggen.go

index ba5f2dfc2bd14ac10926c1dd0e1f8d86454e284b..6a72b27ac56826205107290c30b6d722c7943809 100644 (file)
@@ -105,10 +105,8 @@ func zeroAuto(pp *gc.Progs, n *gc.Node) {
 }
 
 func ginsnop(pp *gc.Progs) *obj.Prog {
-       p := pp.Prog(s390x.AOR)
-       p.From.Type = obj.TYPE_REG
-       p.From.Reg = int16(s390x.REG_R0)
-       p.To.Type = obj.TYPE_REG
-       p.To.Reg = int16(s390x.REG_R0)
+       p := pp.Prog(s390x.AWORD)
+       p.From.Type = obj.TYPE_CONST
+       p.From.Offset = 0x47000000 // nop 0
        return p
 }