mirror of https://gitee.com/openkylin/qemu.git
tcg: Adjust tcg_out_label for const
Simplify the arguments to always use s->code_ptr instead of take it as an argument. That makes it easy to ensure that the value_ptr is always the rx version. Reviewed-by: Joelle van Dyne <j@getutm.app> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
2be7d76b15
commit
92ab8e7d62
|
@ -1461,7 +1461,7 @@ static void tcg_out_brcond2(TCGContext *s, const TCGArg *args,
|
|||
default:
|
||||
tcg_abort();
|
||||
}
|
||||
tcg_out_label(s, label_next, s->code_ptr);
|
||||
tcg_out_label(s, label_next);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1503,10 +1503,10 @@ static void tcg_out_setcond2(TCGContext *s, const TCGArg *args,
|
|||
|
||||
tcg_out_movi(s, TCG_TYPE_I32, args[0], 0);
|
||||
tcg_out_jxx(s, JCC_JMP, label_over, 1);
|
||||
tcg_out_label(s, label_true, s->code_ptr);
|
||||
tcg_out_label(s, label_true);
|
||||
|
||||
tcg_out_movi(s, TCG_TYPE_I32, args[0], 1);
|
||||
tcg_out_label(s, label_over, s->code_ptr);
|
||||
tcg_out_label(s, label_over);
|
||||
} else {
|
||||
/* When the destination does not overlap one of the arguments,
|
||||
clear the destination first, jump if cond false, and emit an
|
||||
|
@ -1520,7 +1520,7 @@ static void tcg_out_setcond2(TCGContext *s, const TCGArg *args,
|
|||
tcg_out_brcond2(s, new_args, const_args+1, 1);
|
||||
|
||||
tgen_arithi(s, ARITH_ADD, args[0], 1, 0);
|
||||
tcg_out_label(s, label_over, s->code_ptr);
|
||||
tcg_out_label(s, label_over);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -1534,7 +1534,7 @@ static void tcg_out_cmov(TCGContext *s, TCGCond cond, int rexw,
|
|||
TCGLabel *over = gen_new_label();
|
||||
tcg_out_jxx(s, tcg_cond_to_jcc[tcg_invert_cond(cond)], over, 1);
|
||||
tcg_out_mov(s, TCG_TYPE_I32, dest, v1);
|
||||
tcg_out_label(s, over, s->code_ptr);
|
||||
tcg_out_label(s, over);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -302,11 +302,11 @@ static void tcg_out_reloc(TCGContext *s, tcg_insn_unit *code_ptr, int type,
|
|||
QSIMPLEQ_INSERT_TAIL(&l->relocs, r, next);
|
||||
}
|
||||
|
||||
static void tcg_out_label(TCGContext *s, TCGLabel *l, tcg_insn_unit *ptr)
|
||||
static void tcg_out_label(TCGContext *s, TCGLabel *l)
|
||||
{
|
||||
tcg_debug_assert(!l->has_value);
|
||||
l->has_value = 1;
|
||||
l->u.value_ptr = tcg_splitwx_to_rx(ptr);
|
||||
l->u.value_ptr = tcg_splitwx_to_rx(s->code_ptr);
|
||||
}
|
||||
|
||||
TCGLabel *gen_new_label(void)
|
||||
|
@ -4329,7 +4329,7 @@ int tcg_gen_code(TCGContext *s, TranslationBlock *tb)
|
|||
break;
|
||||
case INDEX_op_set_label:
|
||||
tcg_reg_alloc_bb_end(s, s->reserved_regs);
|
||||
tcg_out_label(s, arg_label(op->args[0]), s->code_ptr);
|
||||
tcg_out_label(s, arg_label(op->args[0]));
|
||||
break;
|
||||
case INDEX_op_call:
|
||||
tcg_reg_alloc_call(s, op);
|
||||
|
|
Loading…
Reference in New Issue