do the locking before processing the call-reads otherwise all the call's parameters get locked as well

This commit is contained in:
Wolfgang Bumiller 2012-12-25 23:24:31 +01:00
parent 710f580e15
commit d7de5cb5ff

10
ir.c
View file

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