On Wed, Feb 23, 2011 at 5:19 PM, Peter Maydell <peter.mayd...@linaro.org> wrote:
> Use the new TCG temporary leak debugging facilities to
> check that each ARM instruction does not leak temporaries.
>
> Signed-off-by: Peter Maydell <peter.mayd...@linaro.org>
> ---
>  target-arm/translate.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/target-arm/translate.c b/target-arm/translate.c
> index 31067d5..b96a136 100644
> --- a/target-arm/translate.c
> +++ b/target-arm/translate.c
> @@ -9125,6 +9125,8 @@ static inline void 
> gen_intermediate_code_internal(CPUState *env,
>
>     gen_icount_start();
>
> +    tcg_clear_temp_count();
> +
>     /* A note on handling of the condexec (IT) bits:
>      *
>      * We want to avoid the overhead of having to write the updated condexec
> @@ -9234,6 +9236,11 @@ static inline void 
> gen_intermediate_code_internal(CPUState *env,
>             gen_set_label(dc->condlabel);
>             dc->condjmp = 0;
>         }
> +
> +        if (tcg_check_temp_count()) {
> +            fprintf(stderr, "TCG temporary leak before %08x\n", dc->pc);
> +        }

Perhaps this check and tcg_clear_temp_count() calls should be added
instead to tb_gen_code() in exec.c, to benefit all targets at once. PC
information will not be as accurate, though.

Reply via email to