+ /* Removing a vector removes all members */
+ for (mem = 0; mem < 3; ++mem) {
+ if (value->members[mem] && vec_ir_value_find(self->living, value->members[mem], &idx)) {
+ tempbool = ir_value_life_merge(value->members[mem], instr->eid);
+ *changed = *changed || tempbool;
+ vec_remove(self->living, idx, 1);
+ }
+ }
+ /* Removing the last member removes the vector */
+ if (value->memberof) {
+ value = value->memberof;
+ for (mem = 0; mem < 3; ++mem) {
+ if (value->members[mem] && vec_ir_value_find(self->living, value->members[mem], NULL))
+ break;
+ }
+ if (mem == 3 && vec_ir_value_find(self->living, value, &idx)) {
+ tempbool = ir_value_life_merge(value, instr->eid);
+ *changed = *changed || tempbool;
+ vec_remove(self->living, idx, 1);
+ }
+ }