From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43209) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZImTt-0007Yr-AF for qemu-devel@nongnu.org; Fri, 24 Jul 2015 19:34:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZImTs-0005Nn-Dr for qemu-devel@nongnu.org; Fri, 24 Jul 2015 19:34:21 -0400 Received: from hall.aurel32.net ([2001:bc8:30d7:100::1]:55135) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZImTs-0005Mw-8i for qemu-devel@nongnu.org; Fri, 24 Jul 2015 19:34:20 -0400 From: Aurelien Jarno Date: Sat, 25 Jul 2015 01:34:12 +0200 Message-Id: <1437780852-1549-1-git-send-email-aurelien@aurel32.net> Subject: [Qemu-devel] [PATCH for-2.4] tcg: correctly mark dead inputs for mov with a constant List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Aurelien Jarno , Richard Henderson When tcg_reg_alloc_mov propagate a constant, we failed to correctly mark a temp as dead if the liveness analysis hints so. This fixes the following assert when configure with --enable-debug-tcg: qemu-x86_64: tcg/tcg.c:1827: tcg_reg_alloc_bb_end: Assertion `ts->val_type == TEMP_VAL_DEAD' failed. Cc: Richard Henderson Reported-by: Richard Henderson Signed-off-by: Aurelien Jarno --- tcg/tcg.c | 3 +++ 1 file changed, 3 insertions(+) This is triggered by the patch "tcg/optimize: allow constant to have copies", but I guess it might be triggered other ways. Therefore it's a good candidate for 2.4. diff --git a/tcg/tcg.c b/tcg/tcg.c index 7e088b1..9a2508b 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1920,6 +1920,9 @@ static void tcg_reg_alloc_mov(TCGContext *s, const TCGOpDef *def, } ots->val_type = TEMP_VAL_CONST; ots->val = ts->val; + if (IS_DEAD_ARG(1)) { + temp_dead(s, args[1]); + } } else { /* The code in the first if block should have moved the temp to a register. */ -- 2.1.4