Hi Richard, On 5/3/21 1:57 AM, Richard Henderson wrote: > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > tcg/internal.h | 5 +++++ > tcg/tcg.c | 5 ++--- > 2 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/tcg/internal.h b/tcg/internal.h > index c2d5e9c42f..cd128e2a83 100644 > --- a/tcg/internal.h > +++ b/tcg/internal.h > @@ -32,6 +32,11 @@ typedef struct TCGHelperInfo { > unsigned typemask; > } TCGHelperInfo; > > +static inline void *tcg_call_func(TCGOp *op) > +{ > + return (void *)(uintptr_t)op->args[TCGOP_CALLO(op) + TCGOP_CALLI(op)];
Why not return tcg_insn_unit* type? > +} > + > static inline const TCGHelperInfo *tcg_call_info(TCGOp *op) > { > return (void *)(uintptr_t)op->args[TCGOP_CALLO(op) + TCGOP_CALLI(op) + > 1]; > diff --git a/tcg/tcg.c b/tcg/tcg.c > index d42fa6c956..1e5e165bff 100644 > --- a/tcg/tcg.c > +++ b/tcg/tcg.c > @@ -2310,7 +2310,7 @@ static void tcg_dump_ops(TCGContext *s, bool have_prefs) > } > } else if (c == INDEX_op_call) { > const TCGHelperInfo *info = tcg_call_info(op); > - void *func; > + void *func = tcg_call_func(op); > > /* variable number of arguments */ > nb_oargs = TCGOP_CALLO(op); > @@ -2324,7 +2324,6 @@ static void tcg_dump_ops(TCGContext *s, bool have_prefs) > * Note that plugins have a template function for the info, > * but the actual function pointer comes from the plugin. > */ > - func = (void *)(uintptr_t)op->args[nb_oargs + nb_iargs]; > if (func == info->func) { > col += qemu_log("%s", info->name); > } else { > @@ -4346,7 +4345,7 @@ static void tcg_reg_alloc_call(TCGContext *s, TCGOp *op) > int allocate_args; > TCGRegSet allocated_regs; > > - func_addr = (tcg_insn_unit *)(intptr_t)op->args[nb_oargs + nb_iargs]; > + func_addr = tcg_call_func(op); > flags = tcg_call_flags(op); > > nb_regs = ARRAY_SIZE(tcg_target_call_iarg_regs); >