diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2012-10-09 21:53:07 +0200 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2012-10-28 14:54:22 +0100 |
commit | a52ad07e7cde61c799ca3351ccd58c04d6f7474f (patch) | |
tree | 295ee61c687b802699ef95326e557045e81f27a9 /tcg | |
parent | c29c1d7edfc57fc4ab15e30b3cea990a5685dd7a (diff) | |
download | qemu-a52ad07e7cde61c799ca3351ccd58c04d6f7474f.tar.gz qemu-a52ad07e7cde61c799ca3351ccd58c04d6f7474f.tar.bz2 qemu-a52ad07e7cde61c799ca3351ccd58c04d6f7474f.zip |
tcg: always mark dead input arguments as dead
Always mark dead input arguments as dead, even if the op is at the basic
block end. This will allow to check that all temps are correctly saved.
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'tcg')
-rw-r--r-- | tcg/tcg.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -1874,16 +1874,16 @@ static void tcg_reg_alloc_op(TCGContext *s, iarg_end: ; } + /* mark dead temporaries and free the associated registers */ + for (i = nb_oargs; i < nb_oargs + nb_iargs; i++) { + if (IS_DEAD_ARG(i)) { + temp_dead(s, args[i]); + } + } + if (def->flags & TCG_OPF_BB_END) { tcg_reg_alloc_bb_end(s, allocated_regs); } else { - /* mark dead temporaries and free the associated registers */ - for(i = nb_oargs; i < nb_oargs + nb_iargs; i++) { - if (IS_DEAD_ARG(i)) { - temp_dead(s, args[i]); - } - } - if (def->flags & TCG_OPF_CALL_CLOBBER) { /* XXX: permit generic clobber register list ? */ for(reg = 0; reg < TCG_TARGET_NB_REGS; reg++) { |