diff --git a/src/cmd/compile/internal/ssa/check.go b/src/cmd/compile/internal/ssa/check.go index 457bf639db..d77b912041 100644 --- a/src/cmd/compile/internal/ssa/check.go +++ b/src/cmd/compile/internal/ssa/check.go @@ -208,10 +208,16 @@ func checkFunc(f *Func) { f.Fatalf("value %s has an AuxInt value %d but shouldn't", v.LongString(), v.AuxInt) } - for _, arg := range v.Args { + for i, arg := range v.Args { if arg == nil { f.Fatalf("value %s has nil arg", v.LongString()) } + if v.Op != OpPhi { + // For non-Phi ops, memory args must be last, if present + if arg.Type.IsMemory() && i != len(v.Args)-1 { + f.Fatalf("value %s has non-final memory arg (%d < %d)", v.LongString(), i, len(v.Args)-1) + } + } } if valueMark[v.ID] {