Commit d1fe018af8 for qemu.org

commit d1fe018af8bd14fd974767d07fb7f6e010b83e54
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Mon Oct 12 09:33:58 2026 +0200

    target/i386/tcg: inline gen_leave

    The function is a vestige of the old switch-based decoder and does
    not add anything these days.

    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc
index ed56edf8a3..a1ae582174 100644
--- a/target/i386/tcg/emit.c.inc
+++ b/target/i386/tcg/emit.c.inc
@@ -2559,7 +2559,16 @@ static void gen_LEA(DisasContext *s, X86DecodedInsn *decode)

 static void gen_LEAVE(DisasContext *s, X86DecodedInsn *decode)
 {
-    gen_leave(s);
+    MemOp d_ot = mo_pushpop(s, s->dflag);
+    MemOp a_ot = mo_stacksize(s);
+
+    gen_lea_ss_ofs(s, s->A0, cpu_regs[R_EBP], 0);
+    gen_op_ld_v(s, d_ot, s->T0, s->A0);
+
+    tcg_gen_addi_tl(s->T1, cpu_regs[R_EBP], 1 << d_ot);
+
+    gen_op_mov_reg_v(s, d_ot, R_EBP, s->T0);
+    gen_op_mov_reg_v(s, a_ot, R_ESP, s->T1);
 }

 static void gen_LES(DisasContext *s, X86DecodedInsn *decode)
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
index b2cbce046c..3d542acd97 100644
--- a/target/i386/tcg/translate.c
+++ b/target/i386/tcg/translate.c
@@ -2005,20 +2005,6 @@ static void gen_enter(DisasContext *s, int esp_addend, int level)
     gen_op_mov_reg_v(s, a_ot, R_ESP, s->T1);
 }

-static void gen_leave(DisasContext *s)
-{
-    MemOp d_ot = mo_pushpop(s, s->dflag);
-    MemOp a_ot = mo_stacksize(s);
-
-    gen_lea_ss_ofs(s, s->A0, cpu_regs[R_EBP], 0);
-    gen_op_ld_v(s, d_ot, s->T0, s->A0);
-
-    tcg_gen_addi_tl(s->T1, cpu_regs[R_EBP], 1 << d_ot);
-
-    gen_op_mov_reg_v(s, d_ot, R_EBP, s->T0);
-    gen_op_mov_reg_v(s, a_ot, R_ESP, s->T1);
-}
-
 /* an interrupt is different from an exception because of the
    privilege checks */
 static void gen_interrupt(DisasContext *s, uint8_t intno)