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);