From 8f7f19ce43229090b76d93104eafe19100d264af Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 18 Nov 2019 16:27:12 -0500 Subject: [PATCH] target/arm: Free TCG temps in trans_VMOV_64_sp() The function neon_store_reg32() doesn't free the TCG temp that it is passed, so the caller must do that. We got this right in most places but forgot to free the TCG temps in trans_VMOV_64_sp(). Backports commit 38fb634853ac6547326d9f88b9a068d9fc6b4ad4 from qemu --- qemu/target/arm/translate-vfp.inc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qemu/target/arm/translate-vfp.inc.c b/qemu/target/arm/translate-vfp.inc.c index dbe07283..23079834 100644 --- a/qemu/target/arm/translate-vfp.inc.c +++ b/qemu/target/arm/translate-vfp.inc.c @@ -893,8 +893,10 @@ static bool trans_VMOV_64_sp(DisasContext *s, arg_VMOV_64_sp *a) /* gpreg to fpreg */ tmp = load_reg(s, a->rt); neon_store_reg32(s, tmp, a->vm); + tcg_temp_free_i32(tcg_ctx, tmp); tmp = load_reg(s, a->rt2); neon_store_reg32(s, tmp, a->vm + 1); + tcg_temp_free_i32(tcg_ctx, tmp); } return true;