Message ID | 20210502235727.1979457-8-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | TCI fixes and cleanups | expand |
Hi Richard, On 5/3/21 1:57 AM, Richard Henderson wrote: > Signed-off-by: Richard Henderson <richard.henderson@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); >
On 5/3/21 4:50 PM, Philippe Mathieu-Daudé wrote: > Hi Richard, > > On 5/3/21 1:57 AM, Richard Henderson wrote: >> Signed-off-by: Richard Henderson<richard.henderson@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? That's a fairly tcg code generation type -- this is used for more than that. I think it's more natural to use void* when we don't know what the real type. r~
On 5/16/21 3:21 AM, Richard Henderson wrote: > On 5/3/21 4:50 PM, Philippe Mathieu-Daudé wrote: >> Hi Richard, >> >> On 5/3/21 1:57 AM, Richard Henderson wrote: >>> Signed-off-by: Richard Henderson<richard.henderson@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? > > That's a fairly tcg code generation type -- this is used for more than > that. I think it's more natural to use void* when we don't know what > the real type. OK. Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
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)]; +} + 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);
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- tcg/internal.h | 5 +++++ tcg/tcg.c | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) -- 2.25.1