aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/opGen.go
diff options
context:
space:
mode:
authorCherry Zhang <cherryyz@google.com>2019-10-28 00:50:39 -0400
committerCherry Zhang <cherryyz@google.com>2019-11-07 19:20:35 +0000
commitceca99bdebf1154879288d108c8506372e1a0173 (patch)
tree86e605208452c73910534e1c4b6b893dcb6f70a8 /src/cmd/compile/internal/ssa/opGen.go
parent24e549a717d1e083e7bef9003bce124294e9e975 (diff)
downloadgo-ceca99bdebf1154879288d108c8506372e1a0173.tar.gz
go-ceca99bdebf1154879288d108c8506372e1a0173.zip
cmd/compile, cmd/internal/obj/ppc64: mark unsafe points
We'll use CTR as a scratch register for call injection. Mark code sequences that use CTR as unsafe for async preemption. Currently it is only used in LoweredZero and LoweredMove. It is unfortunate that they are nonpreemptible. But I think it is still better than using LR for call injection and marking all leaf functions nonpreemptible. Also mark the prologue of large frame functions nonpreemptible, as we write below SP. Change-Id: I05a75431499f3f4b2f23651a7b17f7fcf2afbe06 Reviewed-on: https://go-review.googlesource.com/c/go/+/203823 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/ssa/opGen.go')
-rw-r--r--src/cmd/compile/internal/ssa/opGen.go2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go
index b5b2c1d406..047a2a5573 100644
--- a/src/cmd/compile/internal/ssa/opGen.go
+++ b/src/cmd/compile/internal/ssa/opGen.go
@@ -24566,6 +24566,7 @@ var opcodeTable = [...]opInfo{
argLen: 2,
clobberFlags: true,
faultOnNilArg0: true,
+ unsafePoint: true,
reg: regInfo{
inputs: []inputInfo{
{0, 8}, // R3
@@ -24580,6 +24581,7 @@ var opcodeTable = [...]opInfo{
clobberFlags: true,
faultOnNilArg0: true,
faultOnNilArg1: true,
+ unsafePoint: true,
reg: regInfo{
inputs: []inputInfo{
{0, 8}, // R3