bool Filler::searchForward(MachineBasicBlock &MBB, Iter Slot) const { // Can handle only calls. if (DisableForwardSearch || !Slot->isCall()) return false; RegDefsUses RegDU(*MBB.getParent()->getSubtarget().getRegisterInfo()); NoMemInstr NM; Iter Filler; RegDU.setCallerSaved(*Slot); if (!searchRange(MBB, std::next(Slot), MBB.end(), RegDU, NM, Slot, Filler)) return false; MBB.splice(std::next(Slot), &MBB, Filler); MIBundleBuilder(MBB, Slot, std::next(Slot, 2)); ++UsefulSlots; return true; }
bool Filler::searchForward(MachineBasicBlock &MBB, Iter Slot) const { // Can handle only calls. if (DisableForwardSearch || !Slot->isCall()) return false; RegDefsUses RegDU(TM); NoMemInstr NM; Iter Filler; RegDU.setCallerSaved(*Slot); if (searchRange(MBB, llvm::next(Slot), MBB.end(), RegDU, NM, Filler)) { MBB.splice(llvm::next(Slot), &MBB, Filler); MIBundleBuilder(MBB, Slot, llvm::next(llvm::next(Slot))); ++UsefulSlots; return true; } return false; }