From: Wolfgang Bumiller Date: Tue, 25 Dec 2012 22:24:31 +0000 (+0100) Subject: do the locking before processing the call-reads otherwise all the call's parameters... X-Git-Tag: before-library~498 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=d7de5cb5ffeaf93029cab085fb23f11898b69e1a;p=xonotic%2Fgmqcc.git do the locking before processing the call-reads otherwise all the call's parameters get locked as well --- diff --git a/ir.c b/ir.c index 7d35e7f..40f36de 100644 --- a/ir.c +++ b/ir.c @@ -2498,6 +2498,11 @@ static bool ir_block_life_propagate(ir_block *self, ir_block *prev, bool *change } } + /* on a call, all these values must be "locked" */ + if (instr->opcode >= INSTR_CALL0 && instr->opcode <= INSTR_CALL8) { + if (ir_block_living_lock(self)) + *changed = true; + } /* call params are read operands too */ for (p = 0; p < vec_size(instr->params); ++p) { @@ -2512,11 +2517,6 @@ static bool ir_block_life_propagate(ir_block *self, ir_block *prev, bool *change vec_push(self->living, value->members[mem]); } } - /* on a call, all these values must be "locked" */ - if (instr->opcode >= INSTR_CALL0 && instr->opcode <= INSTR_CALL8) { - if (ir_block_living_lock(self)) - *changed = true; - } /* (A) */ tempbool = ir_block_living_add_instr(self, instr->eid);