This could lead to incorrect code when fixed regs are involved.
Surprisingly, the increased freedom actually leads to lower
register usage in some cases. Still want to find a better way
to treat constraints though ...
case OP_MOV:
if (!(mask & JOIN_MASK_MOV))
break;
+ i = insn->getDef(0)->uses ? insn->getDef(0)->uses->getInsn() : NULL;
+ // if this is a contraint-move there will only be a single use
+ if (i && i->op == OP_CONSTRAINT)
+ break;
i = insn->getSrc(0)->getUniqueInsn();
if (i && !i->constrainedDefs())
insn->getDef(0)->coalesce(insn->getSrc(0), false);