From: Richard Henderson Date: Tue, 11 Dec 2018 16:25:02 +0000 (-0600) Subject: tcg: Improve call argument loading X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=4250da10923347c9ee907f8d72bd93dfa5ee8742;p=qemu.git 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. Signed-off-by: Richard Henderson --- diff --git a/tcg/tcg.c b/tcg/tcg.c index 5f8c09b0b4..c54b119020 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -3611,15 +3611,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); }