I'm going to add an optimization for redundant SF update removal, which
will just remove the SF and leave us (in many cases) with an instruction
with a NULL destination and no side effects. Rather than teaching that
pass whether the whole instruction can be removed, leave that
responsibility to this pass.
list_for_each_entry_safe_rev(struct qinst, inst, &c->instructions,
link) {
- if (inst->dst.file == QFILE_TEMP &&
- !used[inst->dst.index] &&
+ if ((inst->dst.file == QFILE_NULL ||
+ (inst->dst.file == QFILE_TEMP &&
+ !used[inst->dst.index])) &&
!inst->sf &&
!qir_has_side_effects(c, inst) &&
!has_nonremovable_reads(c, inst)) {