misched: obvious iterator update fixes for bottom-up.

llvm-svn: 153160
This commit is contained in:
Andrew Trick 2012-03-21 04:12:10 +00:00
parent de670c0304
commit 54f7def703
1 changed files with 6 additions and 0 deletions

View File

@ -369,8 +369,12 @@ void ScheduleDAGMI::releasePredecessors(SUnit *SU) {
void ScheduleDAGMI::moveInstruction(MachineInstr *MI,
MachineBasicBlock::iterator InsertPos) {
// Fix RegionBegin if the first instruction moves down.
if (&*RegionBegin == MI)
RegionBegin = llvm::next(RegionBegin);
BB->splice(InsertPos, BB, MI);
LIS->handleMove(MI);
// Fix RegionBegin if another instruction moves above the first instruction.
if (RegionBegin == InsertPos)
RegionBegin = MI;
}
@ -440,6 +444,8 @@ void ScheduleDAGMI::schedule() {
if (&*llvm::prior(CurrentBottom) == MI)
--CurrentBottom;
else {
if (&*CurrentTop == MI)
CurrentTop = llvm::next(CurrentTop);
moveInstruction(MI, CurrentBottom);
CurrentBottom = MI;
}