diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-12-17 23:16:38 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-12-17 23:16:38 +0000 |
commit | 8d121404370cd57be7e72543127a1afe2faa1b10 (patch) | |
tree | f1031385bc2a5e61ab4ed51df2ad8c2d5bb3283d | |
parent | af24964251e27c2dd863239ba66ffd967b593be5 (diff) |
Avoid dereferencing end() in collectInterferingVRegs() when there is no
interference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122108 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/LiveInterval.h | 1 | ||||
-rw-r--r-- | lib/CodeGen/LiveIntervalUnion.cpp | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/include/llvm/CodeGen/LiveInterval.h b/include/llvm/CodeGen/LiveInterval.h index c21df28cdd..72f1624d06 100644 --- a/include/llvm/CodeGen/LiveInterval.h +++ b/include/llvm/CodeGen/LiveInterval.h @@ -250,6 +250,7 @@ namespace llvm { /// position is in a hole, this method returns an iterator pointing to the /// LiveRange immediately after the hole. iterator advanceTo(iterator I, SlotIndex Pos) { + assert(I != end()); if (Pos >= endIndex()) return end(); while (I->end <= Pos) ++I; diff --git a/lib/CodeGen/LiveIntervalUnion.cpp b/lib/CodeGen/LiveIntervalUnion.cpp index 7ebe96f066..cec68850fa 100644 --- a/lib/CodeGen/LiveIntervalUnion.cpp +++ b/lib/CodeGen/LiveIntervalUnion.cpp @@ -238,7 +238,7 @@ collectInterferingVRegs(unsigned MaxInterferingRegs) { InterferenceResult IR = firstInterference(); LiveInterval::iterator VirtRegEnd = VirtReg->end(); LiveInterval *RecentInterferingVReg = NULL; - while (IR.LiveUnionI.valid()) { + if (IR.VirtRegI != VirtRegEnd) while (IR.LiveUnionI.valid()) { // Advance the union's iterator to reach an unseen interfering vreg. do { if (IR.LiveUnionI.value() == RecentInterferingVReg) |