From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48586) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Za7ZT-0001AE-Nm for qemu-devel@nongnu.org; Thu, 10 Sep 2015 15:31:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Za7ZS-00008k-OD for qemu-devel@nongnu.org; Thu, 10 Sep 2015 15:31:47 -0400 Received: from hall.aurel32.net ([2001:bc8:30d7:100::1]:48037) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Za7ZS-00008b-Ba for qemu-devel@nongnu.org; Thu, 10 Sep 2015 15:31:46 -0400 Date: Thu, 10 Sep 2015 21:31:31 +0200 From: Aurelien Jarno Message-ID: <20150910193131.GA17037@aurel32.net> References: <1439909964-27945-1-git-send-email-rth@twiddle.net> <55D4A57F.6070209@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <55D4A57F.6070209@twiddle.net> Subject: Re: [Qemu-devel] [PULL v2] Queued TCG improvements List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Richard Henderson Cc: Peter Maydell , QEMU Developers On 2015-08-19 08:49, Richard Henderson wrote: > 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? Sorry for answering so late while it's already merged. This is indeed correct. Thanks for fixing that. > 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 */ > > -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurelien@aurel32.net http://www.aurel32.net