From d7de5cb5ffeaf93029cab085fb23f11898b69e1a Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Tue, 25 Dec 2012 23:24:31 +0100 Subject: [PATCH] do the locking before processing the call-reads otherwise all the call's parameters get locked as well --- ir.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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); -- 2.39.2