From: Andrew Trick Date: Tue, 7 Jun 2011 00:38:12 +0000 (+0000) Subject: Fix a merge bug in preRAsched for handling physreg aliases. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9d507aec07c7e22c6ba83dfd75e23c8630cd25cd;p=oota-llvm.git Fix a merge bug in preRAsched for handling physreg aliases. I've been sitting on this long enough trying to find a test case. I think the fix should go in now, but I'll keep working on the test case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132701 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp index 88bd4509b46..14717e6406f 100644 --- a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp +++ b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp @@ -1008,14 +1008,16 @@ static void CheckForLiveRegDef(SUnit *SU, unsigned Reg, for (const unsigned *AliasI = TRI->getOverlaps(Reg); *AliasI; ++AliasI) { // Check if Ref is live. - if (!LiveRegDefs[Reg]) continue; + if (!LiveRegDefs[*AliasI]) continue; // Allow multiple uses of the same def. - if (LiveRegDefs[Reg] == SU) continue; + if (LiveRegDefs[*AliasI] == SU) continue; // Add Reg to the set of interfering live regs. - if (RegAdded.insert(Reg)) - LRegs.push_back(Reg); + if (RegAdded.insert(*AliasI)) { + assert(*AliasI == Reg && "alias clobber"); //!!! + LRegs.push_back(*AliasI); + } } }