From: Chris Lattner Date: Fri, 8 Sep 2006 20:21:31 +0000 (+0000) Subject: Non-allocatable physregs can be killed and dead, but don't treat them as X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0c5b8dac794b23ac7f84acdc6d2661edb28ed5c8;p=oota-llvm.git Non-allocatable physregs can be killed and dead, but don't treat them as safe for later allocation. This fixes McCat/18-imp with llc-beta. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30204 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/RegAllocLocal.cpp b/lib/CodeGen/RegAllocLocal.cpp index 8e7c1fe2a02..5b9186dbe35 100644 --- a/lib/CodeGen/RegAllocLocal.cpp +++ b/lib/CodeGen/RegAllocLocal.cpp @@ -580,6 +580,9 @@ void RA::AllocateBasicBlock(MachineBasicBlock &MBB) { unsigned &PhysRegSlot = getVirt2PhysRegMapSlot(VirtReg); PhysReg = PhysRegSlot; PhysRegSlot = 0; + } else if (PhysRegsUsed[PhysReg] == -2) { + // Unallocatable register dead, ignore. + continue; } if (PhysReg) { @@ -669,6 +672,9 @@ void RA::AllocateBasicBlock(MachineBasicBlock &MBB) { PhysReg = PhysRegSlot; assert(PhysReg != 0); PhysRegSlot = 0; + } else if (PhysRegsUsed[PhysReg] == -2) { + // Unallocatable register dead, ignore. + continue; } if (PhysReg) {