On 3/19/25 06:44, Philippe Mathieu-Daudé wrote:
In tb_gen_code() we set TCGContext::insn_start_words to
TARGET_INSN_START_WORDS:
290 TranslationBlock *tb_gen_code(...)
293 {
...
351 tcg_ctx->insn_start_words = TARGET_INSN_START_WORDS;
This definition is expanded to:
11 # define TARGET_INSN_START_WORDS (1 + TARGET_INSN_START_EXTRA_WORDS)
Directly use the identical tcg_ctx->insn_start_words variable.
Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org>
---
include/tcg/tcg-op.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Nack.
We are specializing the function signature to the number of arguments.
There is absolutely no point in reading that number from a variable.
r~
diff --git a/include/tcg/tcg-op.h b/include/tcg/tcg-op.h
index e0038e70a8d..1f0d3b95304 100644
--- a/include/tcg/tcg-op.h
+++ b/include/tcg/tcg-op.h
@@ -25,7 +25,7 @@
#if TARGET_INSN_START_EXTRA_WORDS == 0
static inline void tcg_gen_insn_start(uint64_t pc)
{
- unsigned insn_start_words = 1;
+ unsigned insn_start_words = tcg_ctx->insn_start_words;
TCGOp *op = tcg_emit_op(INDEX_op_insn_start,
insn_start_words * 64 / TCG_TARGET_REG_BITS);
@@ -34,7 +34,7 @@ static inline void tcg_gen_insn_start(uint64_t pc)
#elif TARGET_INSN_START_EXTRA_WORDS == 1
static inline void tcg_gen_insn_start(uint64_t pc, uint64_t a1)
{
- unsigned insn_start_words = 1 + TARGET_INSN_START_EXTRA_WORDS;
+ unsigned insn_start_words = tcg_ctx->insn_start_words;
TCGOp *op = tcg_emit_op(INDEX_op_insn_start,
insn_start_words * 64 / TCG_TARGET_REG_BITS);
@@ -44,7 +44,7 @@ static inline void tcg_gen_insn_start(uint64_t pc, uint64_t a1)
#elif TARGET_INSN_START_EXTRA_WORDS == 2
static inline void tcg_gen_insn_start(uint64_t pc, uint64_t a1, uint64_t a2)
{
- unsigned insn_start_words = 1 + TARGET_INSN_START_EXTRA_WORDS;
+ unsigned insn_start_words = tcg_ctx->insn_start_words;
TCGOp *op = tcg_emit_op(INDEX_op_insn_start,
insn_start_words * 64 / TCG_TARGET_REG_BITS);