aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurelien Jarno <aurelien@aurel32.net>2012-10-09 21:53:07 +0200
committerAurelien Jarno <aurelien@aurel32.net>2012-10-28 14:54:22 +0100
commita52ad07e7cde61c799ca3351ccd58c04d6f7474f (patch)
tree295ee61c687b802699ef95326e557045e81f27a9
parentc29c1d7edfc57fc4ab15e30b3cea990a5685dd7a (diff)
downloadqemu-a52ad07e7cde61c799ca3351ccd58c04d6f7474f.zip
qemu-a52ad07e7cde61c799ca3351ccd58c04d6f7474f.tar.gz
qemu-a52ad07e7cde61c799ca3351ccd58c04d6f7474f.tar.bz2
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>
-rw-r--r--tcg/tcg.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/tcg/tcg.c b/tcg/tcg.c
index b219a6d..d81b628 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -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++) {