• Keith Randall's avatar
    cmd/compile: SSA, don't let write barrier clobber return values · 42da35c6
    Keith Randall authored
    When we do *p = f(), we might need to copy the return value from
    f to p with a write barrier.  The write barrier itself is a call,
    so we need to copy the return value of f to a temporary location
    before we call the write barrier function.  Otherwise, the call
    itself (specifically, marshalling the args to typedmemmove) will
    clobber the value we're trying to write.
    
    Fixes #15854
    
    Change-Id: I5703da87634d91a9884e3ec098d7b3af713462e7
    Reviewed-on: https://go-review.googlesource.com/23522Reviewed-by: 's avatarDavid Chase <drchase@google.com>
    Run-TryBot: Keith Randall <khr@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    42da35c6
ssa.go 135 KB