typedef DenseMap<unsigned, const MachineInstr*> RegMap;
bool InsertMoves(MachineBasicBlock &MBB);
-
- void TransferImpOps(MachineInstr &Old, MachineInstr &New);
};
char NEONMoveFixPass::ID = 0;
}
(isA8 && (Domain & ARMII::DomainNEONA8));
}
-/// Transfer implicit kill and def operands from Old to New.
-void NEONMoveFixPass::TransferImpOps(MachineInstr &Old, MachineInstr &New) {
- for (unsigned i = 0, e = Old.getNumOperands(); i != e; ++i) {
- MachineOperand &MO = Old.getOperand(i);
- if (!MO.isReg() || !MO.isImplicit())
- continue;
- New.addOperand(MO);
- }
-}
-
bool NEONMoveFixPass::InsertMoves(MachineBasicBlock &MBB) {
RegMap Defs;
bool Modified = false;
AddDefaultPred(BuildMI(MBB, *MI, MI->getDebugLoc(),
TII->get(ARM::VORRd), DestReg)
.addReg(SrcReg).addReg(SrcReg));
- TransferImpOps(*MI, *NewMI);
+ NewMI->copyImplicitOps(MI);
MBB.erase(MI);
MI = NewMI;