From: Andrew Trick Date: Wed, 21 Mar 2012 04:12:10 +0000 (+0000) Subject: misched: obvious iterator update fixes for bottom-up. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1ce062fe567a08678d20149781c5e308e03d7d83;p=oota-llvm.git misched: obvious iterator update fixes for bottom-up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153160 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/MachineScheduler.cpp b/lib/CodeGen/MachineScheduler.cpp index 9f67d6d0189..57ae6dc02a4 100644 --- a/lib/CodeGen/MachineScheduler.cpp +++ b/lib/CodeGen/MachineScheduler.cpp @@ -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; }