go/test/abi
Than McIntosh cfac62a1cc cmd/compile: fix bug in defer wrapping
The defer wrapping feature added to the compiler's "order" phase
creates temporaries into which it copies defer arguments. If one of
these temps is large enough that we place it into the defer closure by
address (as opposed to by value), then the temp in question can't be
reused later on in the order phase, nor do we want a VARKILL
annotation for it at the end of the current block scope.

Test written by Cherry.

Updates #40724.

Change-Id: Iec7efd87ec5a3e3d7de41cdcc7f39c093ed1e815
Reviewed-on: https://go-review.googlesource.com/c/go/+/312869
Trust: Than McIntosh <thanm@google.com>
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2021-04-23 01:16:19 +00:00
..
bad_internal_offsets.go
bad_select_crash.go
convF_criteria.go
convF_criteria.out
convT64_criteria.go
convT64_criteria.out
defer_aggregate.go
defer_recover_results.go
double_nested_addressed_struct.go
double_nested_struct.go
f_ret_z_not.go
f_ret_z_not.out
fibish.go
fibish.out
fibish2.go
fibish2.out
fibish_closure.go
fibish_closure.out
fuzz_trailing_zero_field.go
idata.go
idata.out
leaf.go
leaf2.go
many_int_input.go
many_int_input.out
many_intstar_input.go
many_intstar_input.out
map.go
methods.go
methods.out
more_intstar_input.go
more_intstar_input.out
named_results.go
named_results.out
named_return_stuff.go
named_return_stuff.out
open_defer_1.go
part_live.go
part_live_2.go
result_live.go
return_stuff.go
return_stuff.out
s_sif_sif.go
spills3.go
spills4.go
store_reg_args.go
struct_3_string_input.go
struct_3_string_input.out
struct_lower_1.go
struct_lower_1.out
too_big_to_ssa.go
too_big_to_ssa.out
uglyfib.go
uglyfib.out
wrapdefer_largetmp.go
wrapdefer_largetmp.out
zombie_struct_select.go