]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: recognize OpS390XLoweredNilCheck as a nil check in the scheduler
authorMichael Munday <munday@ca.ibm.com>
Fri, 23 Sep 2016 14:38:50 +0000 (10:38 -0400)
committerMichael Munday <munday@ca.ibm.com>
Fri, 23 Sep 2016 17:15:36 +0000 (17:15 +0000)
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 <munday@ca.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/ssa/schedule.go

index 135d9082599d2eaa4551f1372088364d10d03c2b..411c09b971711cec5eacc69de7984e3e05699961 100644 (file)
@@ -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: