summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/CodeGen/MachineBasicBlock.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/CodeGen/MachineBasicBlock.cpp b/lib/CodeGen/MachineBasicBlock.cpp
index 3d754366ee..f22a70716e 100644
--- a/lib/CodeGen/MachineBasicBlock.cpp
+++ b/lib/CodeGen/MachineBasicBlock.cpp
@@ -852,12 +852,13 @@ MachineBasicBlock::SplitCriticalEdge(MachineBasicBlock *Succ, Pass *P) {
// Update all intervals for registers whose uses may have been modified by
// updateTerminator().
iterator FirstTerminator = getFirstTerminator();
- MachineInstr *FirstTerminatorMI = FirstTerminator;
- if (FirstTerminatorMI->isBundled())
- FirstTerminatorMI = getBundleStart(FirstTerminatorMI);
- reverse_iterator PreTerminators =
- (FirstTerminator == begin()) ? rend()
- : reverse_iterator(FirstTerminatorMI);
+ reverse_iterator PreTerminators;
+ if (FirstTerminator == begin())
+ PreTerminators = rend();
+ else if (FirstTerminator == end())
+ PreTerminators = rbegin();
+ else
+ PreTerminators = reverse_iterator(FirstTerminator);
LIS->repairIntervalsInRange(this, rbegin(), PreTerminators, UsedRegs);
}