summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Randall <keithr@alum.mit.edu>2018-12-31 15:03:33 -0800
committerKeith Randall <khr@golang.org>2019-01-03 17:00:47 +0000
commitabd1dde1f717f86f94774ce9ab56053947f2d175 (patch)
tree96c27be904cf17a1a8916fde4d508e4cca57561e
parent0175064e697d3e072573b32173299b7edbda7360 (diff)
downloadgo-git-abd1dde1f717f86f94774ce9ab56053947f2d175.tar.gz
cmd/compile: fix no-op instruction used by s390x
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>
-rw-r--r--src/cmd/compile/internal/s390x/ggen.go8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/cmd/compile/internal/s390x/ggen.go b/src/cmd/compile/internal/s390x/ggen.go
index ba5f2dfc2b..6a72b27ac5 100644
--- a/src/cmd/compile/internal/s390x/ggen.go
+++ b/src/cmd/compile/internal/s390x/ggen.go
@@ -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
}