OSDN Git Service
(root)
/
qmiga
/
qemu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
25f49c5
)
tcg: Improve call argument loading
author
Richard Henderson
<richard.henderson@linaro.org>
Tue, 11 Dec 2018 16:25:02 +0000
(10:25 -0600)
committer
Richard Henderson
<richard.henderson@linaro.org>
Tue, 25 Dec 2018 19:58:43 +0000
(06:58 +1100)
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 <richard.henderson@linaro.org>
tcg/tcg.c
patch
|
blob
|
history
diff --git
a/tcg/tcg.c
b/tcg/tcg.c
index
5f8c09b
..
c54b119
100644
(file)
--- 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);
}