diff options
author | Andrew Trick <atrick@apple.com> | 2010-12-23 03:43:21 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2010-12-23 03:43:21 +0000 |
commit | 12acde11cb47cc281d0db52c0b1787a85aa3d8e4 (patch) | |
tree | ef1aa9f4f07f34dfa8337de5f14ccba6fc869f09 /llvm/lib | |
parent | 033efdf4d7ed8f47f1e427e81c6b2522241b3ef2 (diff) | |
download | bcm5719-llvm-12acde11cb47cc281d0db52c0b1787a85aa3d8e4.tar.gz bcm5719-llvm-12acde11cb47cc281d0db52c0b1787a85aa3d8e4.zip |
In CheckForLiveRegDef use TRI->getOverlaps.
llvm-svn: 122473
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp index 793fa3d5998..21227950d02 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp @@ -659,15 +659,18 @@ static void CheckForLiveRegDef(SUnit *SU, unsigned Reg, SmallSet<unsigned, 4> &RegAdded, SmallVector<unsigned, 4> &LRegs, const TargetRegisterInfo *TRI) { - if (LiveRegDefs[Reg] && LiveRegDefs[Reg] != SU) { + for (const unsigned *AliasI = TRI->getOverlaps(Reg); *AliasI; ++AliasI) { + + // Check if Ref is live. + if (!LiveRegDefs[Reg]) continue; + + // Allow multiple uses of the same def. + if (LiveRegDefs[Reg] == SU) continue; + + // Add Reg to the set of interfering live regs. if (RegAdded.insert(Reg)) LRegs.push_back(Reg); } - for (const unsigned *Alias = TRI->getAliasSet(Reg); *Alias; ++Alias) - if (LiveRegDefs[*Alias] && LiveRegDefs[*Alias] != SU) { - if (RegAdded.insert(*Alias)) - LRegs.push_back(*Alias); - } } /// DelayForLiveRegsBottomUp - Returns true if it is necessary to delay |