From: Wolfgang (Blub) Bumiller Date: Wed, 22 Aug 2012 16:51:32 +0000 (+0200) Subject: MUL_VF and MUL_FV get their special life-range handling X-Git-Tag: 0.1-rc1~84 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=7e3ccf46260d371552cade12f8c792bfbce4ebad;p=xonotic%2Fgmqcc.git MUL_VF and MUL_FV get their special life-range handling --- diff --git a/ir.c b/ir.c index dff566e..47b9adc 100644 --- a/ir.c +++ b/ir.c @@ -2109,6 +2109,19 @@ static bool ir_block_life_propagate(ir_block *self, ir_block *prev, bool *change /* See which operands are read and write operands */ ir_op_read_write(instr->opcode, &read, &write); + if (instr->opcode == INSTR_MUL_VF) + { + /* the float source will get an additional lifetime */ + tempbool = ir_value_life_merge(instr->_ops[2], instr->eid+1); + *changed = *changed || tempbool; + } + else if (instr->opcode == INSTR_MUL_FV) + { + /* the float source will get an additional lifetime */ + tempbool = ir_value_life_merge(instr->_ops[1], instr->eid+1); + *changed = *changed || tempbool; + } + /* Go through the 3 main operands */ for (o = 0; o < 3; ++o) {