[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 37/62] tcg: Use noinline for major tcg_gen_code subroutines
From: |
Richard Henderson |
Subject: |
[PULL 37/62] tcg: Use noinline for major tcg_gen_code subroutines |
Date: |
Tue, 28 Feb 2023 16:56:18 -1000 |
This makes it easier to assign blame with perf.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/tcg.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 1a31a30a0d..71b6843eb1 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -2635,7 +2635,8 @@ TCGOp *tcg_op_insert_after(TCGContext *s, TCGOp *old_op,
}
/* Reachable analysis : remove unreachable code. */
-static void reachable_code_pass(TCGContext *s)
+static void __attribute__((noinline))
+reachable_code_pass(TCGContext *s)
{
TCGOp *op, *op_next, *op_prev;
bool dead = false;
@@ -2859,7 +2860,8 @@ static void la_cross_call(TCGContext *s, int nt)
/* Liveness analysis : update the opc_arg_life array to tell if a
given input arguments is dead. Instructions updating dead
temporaries are removed. */
-static void liveness_pass_1(TCGContext *s)
+static void __attribute__((noinline))
+liveness_pass_1(TCGContext *s)
{
int nb_globals = s->nb_globals;
int nb_temps = s->nb_temps;
@@ -3199,7 +3201,8 @@ static void liveness_pass_1(TCGContext *s)
}
/* Liveness analysis: Convert indirect regs to direct temporaries. */
-static bool liveness_pass_2(TCGContext *s)
+static bool __attribute__((noinline))
+liveness_pass_2(TCGContext *s)
{
int nb_globals = s->nb_globals;
int nb_temps, i;
--
2.34.1
- [PULL 32/62] tcg: Adjust TCGContext.temps_in_use check, (continued)
- [PULL 32/62] tcg: Adjust TCGContext.temps_in_use check, Richard Henderson, 2023/02/28
- [PULL 25/62] target/loongarch: Replace `tb_pc()` with `tb->pc`, Richard Henderson, 2023/02/28
- [PULL 31/62] include/exec: Remove `tb_pc()`, Richard Henderson, 2023/02/28
- [PULL 33/62] accel/tcg: Pass max_insn to gen_intermediate_code by pointer, Richard Henderson, 2023/02/28
- [PULL 29/62] target/avr: Replace `tb_pc()` with `tb->pc`, Richard Henderson, 2023/02/28
- [PULL 34/62] accel/tcg: Use more accurate max_insns for tb_overflow, Richard Henderson, 2023/02/28
- [PULL 35/62] tcg: Remove branch-to-next regardless of reference count, Richard Henderson, 2023/02/28
- [PULL 26/62] target/i386: Replace `tb_pc()` with `tb->pc`, Richard Henderson, 2023/02/28
- [PULL 27/62] target/hppa: Replace `tb_pc()` with `tb->pc`, Richard Henderson, 2023/02/28
- [PULL 36/62] tcg: Rename TEMP_LOCAL to TEMP_TB, Richard Henderson, 2023/02/28
- [PULL 37/62] tcg: Use noinline for major tcg_gen_code subroutines,
Richard Henderson <=
- [PULL 38/62] tcg: Add liveness_pass_0, Richard Henderson, 2023/02/28
- [PULL 39/62] tcg: Remove TEMP_NORMAL, Richard Henderson, 2023/02/28
- [PULL 47/62] accel/tcg/plugin: Tidy plugin_gen_disable_mem_helpers, Richard Henderson, 2023/02/28
- [PULL 58/62] target/ppc: Don't use tcg_temp_local_new, Richard Henderson, 2023/02/28
- [PULL 46/62] accel/tcg/plugin: Use tcg_temp_ebb_*, Richard Henderson, 2023/02/28
- [PULL 55/62] target/hppa: Don't use tcg_temp_local_new, Richard Henderson, 2023/02/28
- [PULL 43/62] tcg: Add tcg_temp_ebb_new_{i32,i64,ptr}, Richard Henderson, 2023/02/28
- [PULL 44/62] tcg: Use tcg_temp_ebb_new_* in tcg/, Richard Henderson, 2023/02/28
- [PULL 60/62] exec/gen-icount: Don't use tcg_temp_local_new_i32, Richard Henderson, 2023/02/28
- [PULL 56/62] target/i386: Don't use tcg_temp_local_new, Richard Henderson, 2023/02/28