mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
tcg: Improve tcg_out_label and fix its usage for w64
tcg_out_label is always called with a third argument of pointer type which was casted to tcg_target_long. These casts can be avoided by changing the prototype of tcg_out_label. There was also a cast to long. For most hosts with sizeof(long) == sizeof(tcg_target_long) == sizeof(void *) this did not matter, but for w64 it was wrong. This is fixed now. Cc: Blue Swirl <blauwirbel@gmail.com> Cc: Richard Henderson <rth@twiddle.net> Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
f7cf5d5b71
commit
9d6fca70c7
4 changed files with 14 additions and 14 deletions
|
@ -128,11 +128,11 @@ static void tcg_out_reloc(TCGContext *s, uint8_t *code_ptr, int type,
|
|||
}
|
||||
}
|
||||
|
||||
static void tcg_out_label(TCGContext *s, int label_index,
|
||||
tcg_target_long value)
|
||||
static void tcg_out_label(TCGContext *s, int label_index, void *ptr)
|
||||
{
|
||||
TCGLabel *l;
|
||||
TCGRelocation *r;
|
||||
tcg_target_long value = (tcg_target_long)ptr;
|
||||
|
||||
l = &s->labels[label_index];
|
||||
if (l->has_value)
|
||||
|
@ -2123,7 +2123,7 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf,
|
|||
break;
|
||||
case INDEX_op_set_label:
|
||||
tcg_reg_alloc_bb_end(s, s->reserved_regs);
|
||||
tcg_out_label(s, args[0], (long)s->code_ptr);
|
||||
tcg_out_label(s, args[0], s->code_ptr);
|
||||
break;
|
||||
case INDEX_op_call:
|
||||
dead_args = s->op_dead_args[op_index];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue