mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-05 10:27:02 +00:00
Strengthen the previous check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64076 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f18134a1ae
commit
86fb9fdb20
@ -272,17 +272,15 @@ namespace llvm {
|
||||
return I != kills.end() && *I == KillIdx;
|
||||
}
|
||||
|
||||
/// isOnlyKill - Return true if the specified index is the only kill of the
|
||||
/// specified val#.
|
||||
static bool isOnlyKill(const VNInfo *VNI, unsigned KillIdx) {
|
||||
bool Found = false;
|
||||
const SmallVector<unsigned, 4> &kills = VNI->kills;
|
||||
for (unsigned i = 0, e = kills.size(); i != e; ++i) {
|
||||
if (KillIdx != kills[i])
|
||||
/// isOnlyLROfValNo - Return true if the specified live range is the only
|
||||
/// one defined by the its val#.
|
||||
bool isOnlyLROfValNo( const LiveRange *LR) {
|
||||
for (const_iterator I = begin(), E = end(); I != E; ++I) {
|
||||
const LiveRange *Tmp = I;
|
||||
if (Tmp != LR && Tmp->valno == LR->valno)
|
||||
return false;
|
||||
Found = true;
|
||||
}
|
||||
return Found;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// MergeValueNumberInto - This method is called when two value nubmers
|
||||
|
@ -489,7 +489,7 @@ static void removeRange(LiveInterval &li, unsigned Start, unsigned End,
|
||||
}
|
||||
|
||||
/// TrimLiveIntervalToLastUse - If there is a last use in the same basic block
|
||||
/// as the copy instruction, trim the ive interval to the last use and return
|
||||
/// as the copy instruction, trim the live interval to the last use and return
|
||||
/// true.
|
||||
bool
|
||||
SimpleRegisterCoalescing::TrimLiveIntervalToLastUse(unsigned CopyIdx,
|
||||
@ -867,9 +867,10 @@ SimpleRegisterCoalescing::ShortenDeadCopySrcLiveRange(LiveInterval &li,
|
||||
if (LR->valno->def == RemoveStart) {
|
||||
// If the def MI defines the val# and this copy is the only kill of the
|
||||
// val#, then propagate the dead marker.
|
||||
if (!li.isOnlyKill(LR->valno, RemoveEnd))
|
||||
li.removeKill(LR->valno, RemoveEnd);
|
||||
else {
|
||||
if (!li.isOnlyLROfValNo(LR)) {
|
||||
if (li.isKill(LR->valno, RemoveEnd))
|
||||
li.removeKill(LR->valno, RemoveEnd);
|
||||
} else {
|
||||
PropagateDeadness(li, CopyMI, RemoveStart, li_, tri_);
|
||||
++numDeadValNo;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user