mirror of https://github.com/xemu-project/xemu.git
target/i386: cc_op is not dynamic in gen_jcc1
Resetting cc_op to CC_OP_DYNAMIC should be done at control flow junctions, which is not the case here. This translation block is ending and the only effect of calling set_cc_op() would be a discard of s->cc_srcT. This discard is useless (it's a temporary, not a global) and in fact prevents gen_prepare_cc from returning s->cc_srcT. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
e995f3f944
commit
64ddadc6bb
|
@ -1227,13 +1227,13 @@ static inline void gen_jcc1_noeob(DisasContext *s, int b, TCGLabel *l1)
|
|||
|
||||
/* Generate a conditional jump to label 'l1' according to jump opcode
|
||||
value 'b'. In the fast case, T0 is guaranteed not to be used.
|
||||
A translation block must end soon. */
|
||||
One or both of the branches will call gen_jmp_rel, so ensure
|
||||
cc_op is clean. */
|
||||
static inline void gen_jcc1(DisasContext *s, int b, TCGLabel *l1)
|
||||
{
|
||||
CCPrepare cc = gen_prepare_cc(s, b, s->T0);
|
||||
|
||||
gen_update_cc_op(s);
|
||||
set_cc_op(s, CC_OP_DYNAMIC);
|
||||
if (cc.use_reg2) {
|
||||
tcg_gen_brcond_tl(cc.cond, cc.reg, cc.reg2, l1);
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue