Patchwork target-arm: Fix TCG temporary leaks for scalar VMULL

login
register
mail settings
Submitter Peter Maydell
Date March 11, 2011, 1:32 p.m.
Message ID <1299850354-21799-1-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/86420/
State New
Headers show

Comments

Peter Maydell - March 11, 2011, 1:32 p.m.
Fix a TCG temporary leak when translating 32-bit scalar VMULL.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
This was found by the TCG leak-checking support that was committed a
little while back. Score one for debug code :-)

 target-arm/translate.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Aurelien Jarno - March 22, 2011, 6:58 a.m.
On Fri, Mar 11, 2011 at 01:32:34PM +0000, Peter Maydell wrote:
> Fix a TCG temporary leak when translating 32-bit scalar VMULL.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This was found by the TCG leak-checking support that was committed a
> little while back. Score one for debug code :-)
> 
>  target-arm/translate.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)

Thanks, applied.

> diff --git a/target-arm/translate.c b/target-arm/translate.c
> index 062de5e..e8ec987 100644
> --- a/target-arm/translate.c
> +++ b/target-arm/translate.c
> @@ -4157,10 +4157,12 @@ static inline void gen_neon_mull(TCGv_i64 dest, TCGv a, TCGv b, int size, int u)
>      case 4:
>          tmp = gen_muls_i64_i32(a, b);
>          tcg_gen_mov_i64(dest, tmp);
> +        tcg_temp_free_i64(tmp);
>          break;
>      case 5:
>          tmp = gen_mulu_i64_i32(a, b);
>          tcg_gen_mov_i64(dest, tmp);
> +        tcg_temp_free_i64(tmp);
>          break;
>      default: abort();
>      }
> -- 
> 1.7.1
> 
> 
>

Patch

diff --git a/target-arm/translate.c b/target-arm/translate.c
index 062de5e..e8ec987 100644
--- a/target-arm/translate.c
+++ b/target-arm/translate.c
@@ -4157,10 +4157,12 @@  static inline void gen_neon_mull(TCGv_i64 dest, TCGv a, TCGv b, int size, int u)
     case 4:
         tmp = gen_muls_i64_i32(a, b);
         tcg_gen_mov_i64(dest, tmp);
+        tcg_temp_free_i64(tmp);
         break;
     case 5:
         tmp = gen_mulu_i64_i32(a, b);
         tcg_gen_mov_i64(dest, tmp);
+        tcg_temp_free_i64(tmp);
         break;
     default: abort();
     }