From 8d121404370cd57be7e72543127a1afe2faa1b10 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Fri, 17 Dec 2010 23:16:38 +0000 Subject: [PATCH] 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 --- include/llvm/CodeGen/LiveInterval.h | 1 + lib/CodeGen/LiveIntervalUnion.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/include/llvm/CodeGen/LiveInterval.h b/include/llvm/CodeGen/LiveInterval.h index c21df28cdd0..72f1624d066 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 7ebe96f0660..cec68850fa8 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) -- 2.34.1