[for,2.11] target/sh4/translate.c: fix TCG leak during gusa sequence

Message ID 20171206152845.8215-1-alex.bennee@linaro.org
State New
Headers show
Series
  • [for,2.11] target/sh4/translate.c: fix TCG leak during gusa sequence
Related show

Commit Message

Alex Bennée Dec. 6, 2017, 3:28 p.m.
This fixes bug #1735384 while running java under qemu-sh4. When debug
was enabled it showed a problem with TCG temps. Once fixed I was able
to run java -version normally.

Reported-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: qemu-stable@nongnu.org
---
 target/sh4/translate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Peter Maydell Dec. 6, 2017, 7:05 p.m. | #1
On 6 December 2017 at 15:28, Alex Bennée <alex.bennee@linaro.org> wrote:
> This fixes bug #1735384 while running java under qemu-sh4. When debug
> was enabled it showed a problem with TCG temps. Once fixed I was able
> to run java -version normally.
>

I don't think this merits holding up 2.11, which has already
had what I hope is its final release candidate.

thanks
-- PMM
Alex Bennée Dec. 8, 2017, 2:44 p.m. | #2
Peter Maydell <peter.maydell@linaro.org> writes:

> On 6 December 2017 at 15:28, Alex Bennée <alex.bennee@linaro.org> wrote:
>> This fixes bug #1735384 while running java under qemu-sh4. When debug
>> was enabled it showed a problem with TCG temps. Once fixed I was able
>> to run java -version normally.
>>
>
> I don't think this merits holding up 2.11, which has already
> had what I hope is its final release candidate.

Fair enough.

Aurelien,

Are you going to pick this patch up via your tree for the post-release fixes?

--
Alex Bennée

Patch

diff --git a/target/sh4/translate.c b/target/sh4/translate.c
index 703020fe87..b4b5c822d0 100644
--- a/target/sh4/translate.c
+++ b/target/sh4/translate.c
@@ -2189,7 +2189,7 @@  static int decode_gusa(DisasContext *ctx, CPUSH4State *env, int *pmax_insns)
     }
 
     /* If op_src is not a valid register, then op_arg was a constant.  */
-    if (op_src < 0) {
+    if (op_src < 0 && !TCGV_IS_UNUSED(op_arg)) {
         tcg_temp_free_i32(op_arg);
     }