From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52795) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZS5cE-0004zv-So for qemu-devel@nongnu.org; Wed, 19 Aug 2015 11:49:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZS5cB-0006dP-Ig for qemu-devel@nongnu.org; Wed, 19 Aug 2015 11:49:26 -0400 Received: from mail-qg0-x232.google.com ([2607:f8b0:400d:c04::232]:33307) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZS5cB-0006cr-EN for qemu-devel@nongnu.org; Wed, 19 Aug 2015 11:49:23 -0400 Received: by qged69 with SMTP id d69so7299833qge.0 for ; Wed, 19 Aug 2015 08:49:22 -0700 (PDT) Sender: Richard Henderson References: <1439909964-27945-1-git-send-email-rth@twiddle.net> From: Richard Henderson Message-ID: <55D4A57F.6070209@twiddle.net> Date: Wed, 19 Aug 2015 08:49:19 -0700 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PULL v2] Queued TCG improvements List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Aurelien Jarno Cc: Peter Maydell , QEMU Developers On 08/18/2015 04:23 PM, Peter Maydell wrote: > Hi. I'm afraid this fails 'make check' on 32-bit ARM for me: Found it. The problem is in the temps tracking patch, where we weren't ignoring TCG_CALL_DUMMY_ARG (-1). This isn't used on x86 of course, which is why we didn't see this failure there. The following fixes the problem. I chose to split the initialization so that non-call opcodes don't need to check for . Can I get an RB for squashing this into the original patch? r~ diff --git a/tcg/optimize.c b/tcg/optimize.c index 2693168..10795ec 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -597,17 +597,24 @@ void tcg_optimize(TCGContext *s) const TCGOpDef *def = &tcg_op_defs[opc]; oi_next = op->next; + + /* Count the arguments, and initialize the temps that are + going to be used */ if (opc == INDEX_op_call) { nb_oargs = op->callo; nb_iargs = op->calli; + for (i = 0; i < nb_oargs + nb_iargs; i++) { + tmp = args[i]; + if (tmp != TCG_CALL_DUMMY_ARG) { + init_temp_info(tmp); + } + } } else { nb_oargs = def->nb_oargs; nb_iargs = def->nb_iargs; - } - - /* Initialize the temps that are going to be used */ - for (i = 0; i < nb_oargs + nb_iargs; i++) { - init_temp_info(args[i]); + for (i = 0; i < nb_oargs + nb_iargs; i++) { + init_temp_info(args[i]); + } } /* Do copy propagation */