mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Leave hasPHIKill flags alone in LiveInterval::RenumberValues.
It is conservatively correct to keep the hasPHIKill flags, even after deleting PHI-defs. The calculation can be very expensive after taildup has created a quadratic number of indirectbr edges in the CFG, and the hasPHIKill flag isn't used for anything after RenumberValues(). llvm-svn: 139780
This commit is contained in:
parent
c76a2c21bc
commit
a7631a56b4
@ -313,7 +313,6 @@ namespace llvm {
|
||||
|
||||
/// RenumberValues - Renumber all values in order of appearance and remove
|
||||
/// unused values.
|
||||
/// Recalculate phi-kill flags in case any phi-def values were removed.
|
||||
void RenumberValues(LiveIntervals &lis);
|
||||
|
||||
/// isOnlyLROfValNo - Return true if the specified live range is the only
|
||||
|
@ -148,7 +148,6 @@ void LiveInterval::markValNoForDeletion(VNInfo *ValNo) {
|
||||
/// remaining unused values.
|
||||
void LiveInterval::RenumberValues(LiveIntervals &lis) {
|
||||
SmallPtrSet<VNInfo*, 8> Seen;
|
||||
bool seenPHIDef = false;
|
||||
valnos.clear();
|
||||
for (const_iterator I = begin(), E = end(); I != E; ++I) {
|
||||
VNInfo *VNI = I->valno;
|
||||
@ -157,26 +156,6 @@ void LiveInterval::RenumberValues(LiveIntervals &lis) {
|
||||
assert(!VNI->isUnused() && "Unused valno used by live range");
|
||||
VNI->id = (unsigned)valnos.size();
|
||||
valnos.push_back(VNI);
|
||||
VNI->setHasPHIKill(false);
|
||||
if (VNI->isPHIDef())
|
||||
seenPHIDef = true;
|
||||
}
|
||||
|
||||
// Recompute phi kill flags.
|
||||
if (!seenPHIDef)
|
||||
return;
|
||||
for (const_vni_iterator I = vni_begin(), E = vni_end(); I != E; ++I) {
|
||||
VNInfo *VNI = *I;
|
||||
if (!VNI->isPHIDef())
|
||||
continue;
|
||||
const MachineBasicBlock *PHIBB = lis.getMBBFromIndex(VNI->def);
|
||||
assert(PHIBB && "No basic block for phi-def");
|
||||
for (MachineBasicBlock::const_pred_iterator PI = PHIBB->pred_begin(),
|
||||
PE = PHIBB->pred_end(); PI != PE; ++PI) {
|
||||
VNInfo *KVNI = getVNInfoAt(lis.getMBBEndIdx(*PI).getPrevSlot());
|
||||
if (KVNI)
|
||||
KVNI->setHasPHIKill(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user