mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2024-12-23 09:25:38 +00:00
tcg: Improve call argument loading
Free the argument register only after we have verified that the temporary is not already in that register. This case is likely now that we are back propagating the preferred register. Backports commit 4250da10923347c9ee907f8d72bd93dfa5ee8742 from qemu
This commit is contained in:
parent
64843e8c09
commit
6ed82f77b4
|
@ -3141,15 +3141,16 @@ static void tcg_reg_alloc_call(TCGContext *s, TCGOp *op)
|
|||
if (arg != TCG_CALL_DUMMY_ARG) {
|
||||
ts = arg_temp(arg);
|
||||
reg = tcg_target_call_iarg_regs[i];
|
||||
tcg_reg_free(s, reg, allocated_regs);
|
||||
|
||||
if (ts->val_type == TEMP_VAL_REG) {
|
||||
if (ts->reg != reg) {
|
||||
tcg_reg_free(s, reg, allocated_regs);
|
||||
tcg_out_mov(s, ts->type, reg, ts->reg);
|
||||
}
|
||||
} else {
|
||||
TCGRegSet arg_set = 0;
|
||||
|
||||
tcg_reg_free(s, reg, allocated_regs);
|
||||
tcg_regset_set_reg(arg_set, reg);
|
||||
temp_load(s, ts, arg_set, allocated_regs, 0);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue