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 <dummy>. > > 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 aurel...@aurel32.net http://www.aurel32.net