Register undef(const TargetRegisterClass *RC);
public:
- KernelRewriter(MachineLoop &L, ModuloSchedule &S,
+ KernelRewriter(MachineLoop &L, ModuloSchedule &S, MachineBasicBlock *LoopBB,
LiveIntervals *LIS = nullptr);
void rewrite();
};
} // namespace
KernelRewriter::KernelRewriter(MachineLoop &L, ModuloSchedule &S,
- LiveIntervals *LIS)
- : S(S), BB(L.getTopBlock()), PreheaderBB(L.getLoopPreheader()),
+ MachineBasicBlock *LoopBB, LiveIntervals *LIS)
+ : S(S), BB(LoopBB), PreheaderBB(L.getLoopPreheader()),
ExitBB(L.getExitBlock()), MRI(BB->getParent()->getRegInfo()),
TII(BB->getParent()->getSubtarget().getInstrInfo()), LIS(LIS) {
PreheaderBB = *BB->pred_begin();
}
void PeelingModuloScheduleExpander::rewriteKernel() {
- KernelRewriter KR(*Schedule.getLoop(), Schedule);
+ KernelRewriter KR(*Schedule.getLoop(), Schedule, BB);
KR.rewrite();
}
Preheader->addSuccessor(BB);
// Now run the new expansion algorithm.
- KernelRewriter KR(*Schedule.getLoop(), Schedule);
+ KernelRewriter KR(*Schedule.getLoop(), Schedule, BB);
KR.rewrite();
peelPrologAndEpilogs();