From: Keith Randall Date: Wed, 12 Aug 2015 19:54:47 +0000 (-0700) Subject: [dev.ssa] cmd/compile: fix function call memory X-Git-Tag: go1.7beta1~1623^2^2~284 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d56d2fa20611bd30fce294c2523b859600b8dc18;p=gostls13.git [dev.ssa] cmd/compile: fix function call memory We need to move the memory variable update back to before endBlock so that all successors use the right memory value. See https://go-review.googlesource.com/13560 Change-Id: Id72e5526c56e5e070b933d3b28dc503a5a2978dc Reviewed-on: https://go-review.googlesource.com/13586 Reviewed-by: Josh Bleecher Snyder --- diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index 75e12ee8f2..81f9c8f6ce 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -1311,6 +1311,7 @@ func (s *state) expr(n *Node) *ssa.Value { } dowidth(left.Type) call.AuxInt = left.Type.Argwid // call operations carry the argsize of the callee along with them + s.vars[&memvar] = call b := s.endBlock() b.Kind = ssa.BlockCall b.Control = call @@ -1319,7 +1320,6 @@ func (s *state) expr(n *Node) *ssa.Value { // read result from stack at the start of the fallthrough block s.startBlock(bNext) - s.vars[&memvar] = call var titer Iter fp := Structfirst(&titer, Getoutarg(left.Type)) if fp == nil {