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.