Reload for spilled call return values.
When the return value from a call has been spilled, the reload pass needs to insert a spill instruction right after the call instruction which returns its results in registers.
This commit is contained in:
19
cranelift/filetests/regalloc/reload.cton
Normal file
19
cranelift/filetests/regalloc/reload.cton
Normal file
@@ -0,0 +1,19 @@
|
||||
test regalloc
|
||||
isa riscv enable_e
|
||||
|
||||
; regex: V=v\d+
|
||||
|
||||
; Check that we can handle a function return value that got spilled.
|
||||
function %spill_return() -> i32 {
|
||||
fn0 = function %foo() -> i32 native
|
||||
|
||||
ebb0:
|
||||
v0 = call fn0()
|
||||
; check: $(reg=$V) = call $fn0
|
||||
; check: $v0 = spill $reg
|
||||
v2 = call fn0()
|
||||
; check: $v2 = call $fn0
|
||||
return v0
|
||||
; check: $(reload=$V) = fill $v0
|
||||
; check: return $reload
|
||||
}
|
||||
Reference in New Issue
Block a user