1
0
mirror of https://github.com/golang/go synced 2024-11-26 03:17:57 -07:00
go/test/abi
Cherry Zhang f5efa5a313 cmd/compile: load results into registers on open defer return path
When a function panics then recovers, it needs to return to the
caller with named results having the correct values. For
in-register results, we need to load them into registers at the
defer return path.

For non-open-coded defers, we already generate correct code, as
the defer return path is part of the SSA CFG and contains the
instructions that are the same as an ordinary return statement,
including putting the results to the right places.

For open-coded defers, we have a special code generation that
emits a disconnected block that currently contains only the
deferreturn call and a RET instruction. It leaves the result
registers unset. This CL adds instructions that load the result
registers on that path.

Updates #40724.

Change-Id: I1f60514da644fd5fb4b4871a1153c62f42927282
Reviewed-on: https://go-review.googlesource.com/c/go/+/307231
Trust: Cherry Zhang <cherryyz@google.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Austin Clements <austin@google.com>
2021-04-06 20:22:15 +00:00
..
bad_internal_offsets.go cmd/compile: fix broken type+offset calc for register args 2021-03-09 18:44:23 +00:00
defer_aggregate.go cmd/compile: deduplicate OpArg's across types 2021-03-31 20:21:57 +00:00
defer_recover_results.go cmd/compile: load results into registers on open defer return path 2021-04-06 20:22:15 +00:00
double_nested_addressed_struct.go cmd/compile: return (and receive) medium-large results 2021-03-04 23:09:24 +00:00
double_nested_struct.go cmd/compile: fix OpArg decomposer for registers in expandCalls 2021-03-09 18:43:58 +00:00
f_ret_z_not.go cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
f_ret_z_not.out cmd/compile: fixed which-result confusion in presence of 0-width types 2021-02-27 18:38:31 +00:00
fibish2.go cmd/compile: (fixed) spill output parameters passed in registers as autos 2021-03-16 19:22:44 +00:00
fibish2.out cmd/compile: test register ABI for method, interface, closure calls 2021-03-12 21:18:15 +00:00
fibish_closure.go cmd/compile: test register ABI for method, interface, closure calls 2021-03-12 21:18:15 +00:00
fibish_closure.out cmd/compile: test register ABI for method, interface, closure calls 2021-03-12 21:18:15 +00:00
fibish.go cmd/compile: implement simple register results 2021-03-04 19:45:11 +00:00
fibish.out cmd/compile: implement simple register results 2021-03-04 19:45:11 +00:00
fuzz_trailing_zero_field.go cmd/compile: fix register/offset calculation for trailing empty field case. 2021-04-01 15:50:43 +00:00
idata.go cmd/compile: add "surprised by IData of Arg" case for register args 2021-04-05 20:11:08 +00:00
idata.out cmd/compile: add "surprised by IData of Arg" case for register args 2021-04-05 20:11:08 +00:00
leaf2.go cmd/compile: (fixed) spill output parameters passed in registers as autos 2021-03-16 19:22:44 +00:00
leaf.go cmd/compile: (fixed) spill output parameters passed in registers as autos 2021-03-16 19:22:44 +00:00
many_int_input.go cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
many_int_input.out cmd/compile: register abi, morestack work and mole whacking 2021-03-04 16:19:12 +00:00
many_intstar_input.go cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
many_intstar_input.out cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
methods.go cmd/compile: (fixed) spill output parameters passed in registers as autos 2021-03-16 19:22:44 +00:00
methods.out cmd/compile: test register ABI for method, interface, closure calls 2021-03-12 21:18:15 +00:00
more_intstar_input.go cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
more_intstar_input.out cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
named_results.go cmd/compile: implement too-big-to-SSA struct passing in registers 2021-03-04 20:18:16 +00:00
named_results.out cmd/compile: implement too-big-to-SSA struct passing in registers 2021-03-04 20:18:16 +00:00
named_return_stuff.go cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
named_return_stuff.out cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
open_defer_1.go cmd/compile: fix open defer of method call 2021-03-16 19:23:36 +00:00
return_stuff.go cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
return_stuff.out cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
s_sif_sif.go cmd/compile: fix failure to communicate between ABIinfo producer&consumer 2021-03-09 18:45:05 +00:00
spills3.go cmd/compile: (fixed) spill output parameters passed in registers as autos 2021-03-16 19:22:44 +00:00
spills4.go cmd/compile: (fixed) spill output parameters passed in registers as autos 2021-03-16 19:22:44 +00:00
store_reg_args.go cmd/compile: avoid generating duplicated in-register Arg 2021-03-30 22:10:19 +00:00
struct_3_string_input.go cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
struct_3_string_input.out cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
struct_lower_1.go cmd/compile: fix OpArg decomposer for registers in expandCalls 2021-03-09 18:43:58 +00:00
struct_lower_1.out cmd/compile: fix OpArg decomposer for registers in expandCalls 2021-03-09 18:43:58 +00:00
too_big_to_ssa.go cmd/compile: fix OpArg decomposer for registers in expandCalls 2021-03-09 18:43:58 +00:00
too_big_to_ssa.out cmd/compile: return (and receive) medium-large results 2021-03-04 23:09:24 +00:00
uglyfib.go cmd/compile: add register abi tests 2021-03-04 23:07:50 +00:00
uglyfib.out cmd/compile: fix pointer maps for morestack 2021-03-04 16:21:10 +00:00
zombie_struct_select.go cmd/compile: mark unused values as invalid to prevent problems in expandCalls 2021-04-02 17:58:59 +00:00