[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] target/arm: Free TCG temps in trans_VMOV_64_sp(
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH] target/arm: Free TCG temps in trans_VMOV_64_sp() |
Date: |
Thu, 29 Aug 2019 21:22:22 +0100 |
User-agent: |
mu4e 1.3.4; emacs 27.0.50 |
Aleksandar Markovic <address@hidden> writes:
> 27.08.2019. 14.20, "Peter Maydell" <address@hidden> је написао/ла:
>>
>> 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().
>>
>> Cc: address@hidden
>> Signed-off-by: Peter Maydell <address@hidden>
>> ---
>
> Hello, Peter,
>
> I am just curious if you found this by manual code inspection, or perhaps
> using a tool?
I'm guessing that if you run code that exercises this while built with
--enable-tcg-debug then TCG's sanity checking complains about unfreed
temps.
>
> Yours,
> Aleksandar
>
>> target/arm/translate-vfp.inc.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/target/arm/translate-vfp.inc.c
> b/target/arm/translate-vfp.inc.c
>> index 3e8ea80493b..9ae980bef63 100644
>> --- a/target/arm/translate-vfp.inc.c
>> +++ b/target/arm/translate-vfp.inc.c
>> @@ -880,8 +880,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(tmp, a->vm);
>> + tcg_temp_free_i32(tmp);
>> tmp = load_reg(s, a->rt2);
>> neon_store_reg32(tmp, a->vm + 1);
>> + tcg_temp_free_i32(tmp);
>> }
>>
>> return true;
>> --
>> 2.20.1
>>
>>
--
Alex Bennée