go/src/cmd
Keith Randall 6effdd28de cmd/compile: keep heap pointer for escaping output parameters live
Make sure the pointer to the heap copy of an output parameter is kept
live throughout the function.  The function could panic at any point,
and then a defer could recover.  Thus, we need the pointer to the heap
copy always available so the post-deferreturn code can copy the return
value back to the stack.

Before this CL, the pointer to the heap copy could be considered dead in
certain situations, like code which is reverse dominated by a panic call.

Fixes #16095.

Change-Id: Ic3800423e563670e5b567b473bf4c84cddb49a4c
Reviewed-on: https://go-review.googlesource.com/24213
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
2016-06-27 16:48:48 +00:00
..
addr2line cmd/addr2line: simplify windows test 2015-06-17 14:23:20 +00:00
api api: promote next.txt to go1.7.txt and update api tool 2016-06-02 00:22:03 +00:00
asm cmd/internal/obj/x86: add AVX2 instrutions needed for sha1/sha512/sha256 acceleration 2016-05-06 13:48:29 +00:00
cgo cmd/cgo: error, not panic, if not enough arguments to function 2016-06-21 04:32:04 +00:00
compile cmd/compile: keep heap pointer for escaping output parameters live 2016-06-27 16:48:48 +00:00
cover cmd: fixed certain vet warnings 2016-05-12 15:58:30 +00:00
dist cmd/dist: make zosarch.go deterministic 2016-06-16 19:32:33 +00:00
doc cmd/doc: group constructors with type in package presentation 2016-04-21 21:45:05 +00:00
fix all: single space after period. 2016-03-02 00:13:47 +00:00
go cmd/go: for generate, use build context values for GOOS/GOARCH 2016-06-20 23:55:43 +00:00
gofmt cmd/gofmt: make gofmt -s simplify slices in presence of dot-imports 2016-04-06 18:19:33 +00:00
internal cmd/link: put padding between functions, not at the end of a function 2016-06-13 14:05:52 +00:00
link cmd/compile, etc: handle many struct fields 2016-06-14 15:32:34 +00:00
nm all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
objdump cmd/objdump: skip TestDisasm* on s390x 2016-04-12 18:10:47 +00:00
pack all: use SeekStart, SeekCurrent, SeekEnd 2016-05-06 00:10:41 +00:00
pprof cmd/pprof: don't use local symbolization for remote source 2016-06-25 00:36:40 +00:00
trace cmd/trace: split large traces into parts 2016-05-12 17:53:59 +00:00
vendor cmd/objdump: fix disassembly suffixes 2016-06-23 02:28:18 +00:00
vet cmd/vet: fix name check for examples in _test package 2016-06-27 15:40:09 +00:00
yacc cmd/yacc: error rather than panic when TEMPSIZE is too small 2016-06-23 04:29:35 +00:00