[PATCH] target/xtensa: add missing tcg_temp_free to gen_window_check

Max Filippov posted 1 patch 1 year, 11 months ago
target/xtensa/translate.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] target/xtensa: add missing tcg_temp_free to gen_window_check
Posted by Max Filippov 1 year, 11 months ago
pc and w are allocated with tcg_const_i32 but not freed in
gen_window_check. Add missing tcg_temp_free for pc, use tcg_constant_i32
for w.

Fixes: 2db59a76c421 ("target-xtensa: record available window in TB flags")
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
 target/xtensa/translate.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c
index b1491ed625e5..f4dac27507fd 100644
--- a/target/xtensa/translate.c
+++ b/target/xtensa/translate.c
@@ -572,9 +572,10 @@ static bool gen_window_check(DisasContext *dc, uint32_t mask)
 
     if (r / 4 > dc->window) {
         TCGv_i32 pc = tcg_const_i32(dc->pc);
-        TCGv_i32 w = tcg_const_i32(r / 4);
+        TCGv_i32 w = tcg_constant_i32(r / 4);
 
         gen_helper_window_check(cpu_env, pc, w);
+        tcg_temp_free(pc);
         dc->base.is_jmp = DISAS_NORETURN;
         return false;
     }
-- 
2.30.2
Re: [PATCH] target/xtensa: add missing tcg_temp_free to gen_window_check
Posted by Richard Henderson 1 year, 11 months ago
On 4/21/22 13:21, Max Filippov wrote:
> pc and w are allocated with tcg_const_i32 but not freed in
> gen_window_check. Add missing tcg_temp_free for pc, use tcg_constant_i32
> for w.
> 
> Fixes: 2db59a76c421 ("target-xtensa: record available window in TB flags")
> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
> ---
>   target/xtensa/translate.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c
> index b1491ed625e5..f4dac27507fd 100644
> --- a/target/xtensa/translate.c
> +++ b/target/xtensa/translate.c
> @@ -572,9 +572,10 @@ static bool gen_window_check(DisasContext *dc, uint32_t mask)
>   
>       if (r / 4 > dc->window) {
>           TCGv_i32 pc = tcg_const_i32(dc->pc);
> -        TCGv_i32 w = tcg_const_i32(r / 4);
> +        TCGv_i32 w = tcg_constant_i32(r / 4);
>   
>           gen_helper_window_check(cpu_env, pc, w);
> +        tcg_temp_free(pc);

Should use tcg_constant_i32 for both of them, and not add the free for pc.


r~