mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.ssa] cmd/compile: start arguments as spilled
Declare a function's arguments as having already been spilled so their use just requires a restore. Allow spill locations to be portions of larger objects the stack. Required to load portions of compound input arguments. Rename the memory input to InputMem. Use Arg for the pre-spilled argument values. Change-Id: I8fe2a03ffbba1022d98bfae2052b376b96d32dda Reviewed-on: https://go-review.googlesource.com/16536 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
582baae22a
commit
02f4d0a130
27 changed files with 470 additions and 141 deletions
|
|
@ -10,7 +10,7 @@ func TestDeadLoop(t *testing.T) {
|
|||
c := testConfig(t)
|
||||
fun := Fun(c, "entry",
|
||||
Bloc("entry",
|
||||
Valu("mem", OpArg, TypeMem, 0, ".mem"),
|
||||
Valu("mem", OpInitMem, TypeMem, 0, ".mem"),
|
||||
Goto("exit")),
|
||||
Bloc("exit",
|
||||
Exit("mem")),
|
||||
|
|
@ -40,7 +40,7 @@ func TestDeadValue(t *testing.T) {
|
|||
c := testConfig(t)
|
||||
fun := Fun(c, "entry",
|
||||
Bloc("entry",
|
||||
Valu("mem", OpArg, TypeMem, 0, ".mem"),
|
||||
Valu("mem", OpInitMem, TypeMem, 0, ".mem"),
|
||||
Valu("deadval", OpConst64, TypeInt64, 37, nil),
|
||||
Goto("exit")),
|
||||
Bloc("exit",
|
||||
|
|
@ -64,7 +64,7 @@ func TestNeverTaken(t *testing.T) {
|
|||
fun := Fun(c, "entry",
|
||||
Bloc("entry",
|
||||
Valu("cond", OpConstBool, TypeBool, 0, nil),
|
||||
Valu("mem", OpArg, TypeMem, 0, ".mem"),
|
||||
Valu("mem", OpInitMem, TypeMem, 0, ".mem"),
|
||||
If("cond", "then", "else")),
|
||||
Bloc("then",
|
||||
Goto("exit")),
|
||||
|
|
@ -98,7 +98,7 @@ func TestNestedDeadBlocks(t *testing.T) {
|
|||
c := testConfig(t)
|
||||
fun := Fun(c, "entry",
|
||||
Bloc("entry",
|
||||
Valu("mem", OpArg, TypeMem, 0, ".mem"),
|
||||
Valu("mem", OpInitMem, TypeMem, 0, ".mem"),
|
||||
Valu("cond", OpConstBool, TypeBool, 0, nil),
|
||||
If("cond", "b2", "b4")),
|
||||
Bloc("b2",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue