From 2b3fa322b8788e62e28bc6989a53737bf9483437 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Sat, 12 May 2012 00:33:28 +0000 Subject: [PATCH] Don't look for empty live ranges in the unions. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Empty live ranges represent undef and still get allocated, but they won't appear in LiveIntervalUnions. Patch by Patrik Hägglund! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156685 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/RegAllocBase.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/CodeGen/RegAllocBase.cpp b/lib/CodeGen/RegAllocBase.cpp index b00eceb17f1..b8d1d185e9f 100644 --- a/lib/CodeGen/RegAllocBase.cpp +++ b/lib/CodeGen/RegAllocBase.cpp @@ -69,11 +69,14 @@ void RegAllocBase::verify() { for (LiveIntervals::iterator liItr = LIS->begin(), liEnd = LIS->end(); liItr != liEnd; ++liItr) { unsigned reg = liItr->first; + LiveInterval* li = liItr->second; if (TargetRegisterInfo::isPhysicalRegister(reg)) continue; if (!VRM->hasPhys(reg)) continue; // spilled? + if (li->empty()) continue; // unionVRegs will only be filled if li is + // non-empty unsigned PhysReg = VRM->getPhys(reg); if (!unionVRegs[PhysReg].test(reg)) { - dbgs() << "LiveVirtReg " << reg << " not in union " << + dbgs() << "LiveVirtReg " << PrintReg(reg, TRI) << " not in union " << TRI->getName(PhysReg) << "\n"; llvm_unreachable("unallocated live vreg"); }