projects
/
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 5f8c09b0b436152cf72f7a3ebfbd46c30a6311e2..c54b1190208f6be8d039555a8d78c0111897496a 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);
}