From 120e9ff34f577376f8d1c25a8966c88e0e92fee5 Mon Sep 17 00:00:00 2001 From: Michael Munday Date: Fri, 23 Sep 2016 10:38:50 -0400 Subject: [PATCH] cmd/compile: recognize OpS390XLoweredNilCheck as a nil check in the scheduler Before this change a nil check on s390x could be scheduled after the target pointer has been dereferenced. Change-Id: I7ea40a4b52f975739f6db183a2794be4981c4e3d Reviewed-on: https://go-review.googlesource.com/29730 Run-TryBot: Michael Munday TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/cmd/compile/internal/ssa/schedule.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cmd/compile/internal/ssa/schedule.go b/src/cmd/compile/internal/ssa/schedule.go index 135d908259..411c09b971 100644 --- a/src/cmd/compile/internal/ssa/schedule.go +++ b/src/cmd/compile/internal/ssa/schedule.go @@ -97,7 +97,10 @@ func schedule(f *Func) { f.Fatalf("LoweredGetClosurePtr appeared outside of entry block, b=%s", b.String()) } score[v.ID] = ScorePhi - case v.Op == OpAMD64LoweredNilCheck || v.Op == OpPPC64LoweredNilCheck || v.Op == OpARMLoweredNilCheck || v.Op == OpARM64LoweredNilCheck || v.Op == Op386LoweredNilCheck || v.Op == OpMIPS64LoweredNilCheck: + case v.Op == OpAMD64LoweredNilCheck || v.Op == OpPPC64LoweredNilCheck || + v.Op == OpARMLoweredNilCheck || v.Op == OpARM64LoweredNilCheck || + v.Op == Op386LoweredNilCheck || v.Op == OpMIPS64LoweredNilCheck || + v.Op == OpS390XLoweredNilCheck: // Nil checks must come before loads from the same address. score[v.ID] = ScoreNilCheck case v.Op == OpPhi: -- 2.48.1