diff --git a/tcg/tci.c b/tcg/tci.c index dd9bcd74f3..e323351b75 100644 --- a/tcg/tci.c +++ b/tcg/tci.c @@ -181,10 +181,16 @@ static tcg_target_ulong tci_read_label(const uint8_t **tb_ptr) * where arguments is a sequence of * * c = condition (TCGCond) + * l = label or pointer * r = register * s = signed ldst offset */ +static void tci_args_l(const uint8_t **tb_ptr, void **l0) +{ + *l0 = (void *)tci_read_label(tb_ptr); +} + static void tci_args_rr(const uint8_t **tb_ptr, TCGReg *r0, TCGReg *r1) { @@ -418,9 +424,9 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchState *env, #endif break; case INDEX_op_br: - label = tci_read_label(&tb_ptr); + tci_args_l(&tb_ptr, &ptr); tci_assert(tb_ptr == old_code_ptr + op_size); - tb_ptr = (uint8_t *)label; + tb_ptr = ptr; continue; case INDEX_op_setcond_i32: tci_args_rrrc(&tb_ptr, &r0, &r1, &r2, &condition);