From a6b33312366ad321ea6ac6957e6a53bdd41e892e Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Wed, 15 Feb 2017 13:12:53 -0800 Subject: [PATCH] cmd/compile/internal/gc: skip useless loads for non-SSA params Change-Id: I78ca43a0f0a6a162a2ade1352e2facb29432d4ac Reviewed-on: https://go-review.googlesource.com/37102 Run-TryBot: Matthew Dempsky Reviewed-by: Keith Randall --- src/cmd/compile/internal/gc/ssa.go | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index 21f6e651d8..403e03f9ff 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -120,19 +120,11 @@ func buildssa(fn *Node) *ssa.Func { } } - // Populate arguments. + // Populate SSAable arguments. for _, n := range fn.Func.Dcl { - if n.Class != PPARAM { - continue + if n.Class == PPARAM && s.canSSA(n) { + s.vars[n] = s.newValue0A(ssa.OpArg, n.Type, n) } - var v *ssa.Value - if s.canSSA(n) { - v = s.newValue0A(ssa.OpArg, n.Type, n) - } else { - // Not SSAable. Load it. - v = s.newValue2(ssa.OpLoad, n.Type, s.decladdrs[n], s.startmem) - } - s.vars[n] = v } // Convert the AST-based IR to the SSA-based IR