mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
Remove an unused option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99537 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f476b00f51
commit
fd59f4cd3d
@ -59,11 +59,6 @@ DisableCrossClassJoin("disable-cross-class-join",
|
||||
cl::desc("Avoid coalescing cross register class copies"),
|
||||
cl::init(false), cl::Hidden);
|
||||
|
||||
static cl::opt<bool>
|
||||
PhysJoinTweak("tweak-phys-join-heuristics",
|
||||
cl::desc("Tweak heuristics for joining phys reg with vr"),
|
||||
cl::init(false), cl::Hidden);
|
||||
|
||||
static RegisterPass<SimpleRegisterCoalescing>
|
||||
X("simple-register-coalescing", "Simple Register Coalescing");
|
||||
|
||||
@ -1445,7 +1440,6 @@ bool SimpleRegisterCoalescing::JoinCopy(CopyRec &TheCopy, bool &Again) {
|
||||
const TargetRegisterClass *SrcRC= SrcIsPhys ? 0 : mri_->getRegClass(SrcReg);
|
||||
const TargetRegisterClass *DstRC= DstIsPhys ? 0 : mri_->getRegClass(DstReg);
|
||||
const TargetRegisterClass *NewRC = NULL;
|
||||
MachineBasicBlock *CopyMBB = CopyMI->getParent();
|
||||
unsigned RealDstReg = 0;
|
||||
unsigned RealSrcReg = 0;
|
||||
if (isExtSubReg || isInsSubReg || isSubRegToReg) {
|
||||
@ -1656,60 +1650,36 @@ bool SimpleRegisterCoalescing::JoinCopy(CopyRec &TheCopy, bool &Again) {
|
||||
// these are not spillable! If the destination interval uses are far away,
|
||||
// think twice about coalescing them!
|
||||
if (!isDead && (SrcIsPhys || DstIsPhys)) {
|
||||
// If the copy is in a loop, take care not to coalesce aggressively if the
|
||||
// src is coming in from outside the loop (or the dst is out of the loop).
|
||||
// If it's not in a loop, then determine whether to join them base purely
|
||||
// by the length of the interval.
|
||||
if (PhysJoinTweak) {
|
||||
if (SrcIsPhys) {
|
||||
if (!isWinToJoinVRWithSrcPhysReg(CopyMI, CopyMBB, DstInt, SrcInt)) {
|
||||
mri_->setRegAllocationHint(DstInt.reg, 0, SrcReg);
|
||||
++numAborts;
|
||||
DEBUG(dbgs() << "\tMay tie down a physical register, abort!\n");
|
||||
Again = true; // May be possible to coalesce later.
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!isWinToJoinVRWithDstPhysReg(CopyMI, CopyMBB, DstInt, SrcInt)) {
|
||||
mri_->setRegAllocationHint(SrcInt.reg, 0, DstReg);
|
||||
++numAborts;
|
||||
DEBUG(dbgs() << "\tMay tie down a physical register, abort!\n");
|
||||
Again = true; // May be possible to coalesce later.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// If the virtual register live interval is long but it has low use
|
||||
// density, do not join them, instead mark the physical register as its
|
||||
// allocation preference.
|
||||
LiveInterval &JoinVInt = SrcIsPhys ? DstInt : SrcInt;
|
||||
LiveInterval &JoinPInt = SrcIsPhys ? SrcInt : DstInt;
|
||||
unsigned JoinVReg = SrcIsPhys ? DstReg : SrcReg;
|
||||
unsigned JoinPReg = SrcIsPhys ? SrcReg : DstReg;
|
||||
// If the virtual register live interval is long but it has low use
|
||||
// density, do not join them, instead mark the physical register as its
|
||||
// allocation preference.
|
||||
LiveInterval &JoinVInt = SrcIsPhys ? DstInt : SrcInt;
|
||||
LiveInterval &JoinPInt = SrcIsPhys ? SrcInt : DstInt;
|
||||
unsigned JoinVReg = SrcIsPhys ? DstReg : SrcReg;
|
||||
unsigned JoinPReg = SrcIsPhys ? SrcReg : DstReg;
|
||||
|
||||
// Don't join with physregs that have a ridiculous number of live
|
||||
// ranges. The data structure performance is really bad when that
|
||||
// happens.
|
||||
if (JoinPInt.ranges.size() > 1000) {
|
||||
mri_->setRegAllocationHint(JoinVInt.reg, 0, JoinPReg);
|
||||
++numAborts;
|
||||
DEBUG(dbgs() << "\tPhysical register too complicated, abort!\n");
|
||||
return false;
|
||||
}
|
||||
// Don't join with physregs that have a ridiculous number of live
|
||||
// ranges. The data structure performance is really bad when that
|
||||
// happens.
|
||||
if (JoinPInt.ranges.size() > 1000) {
|
||||
mri_->setRegAllocationHint(JoinVInt.reg, 0, JoinPReg);
|
||||
++numAborts;
|
||||
DEBUG(dbgs() << "\tPhysical register too complicated, abort!\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
const TargetRegisterClass *RC = mri_->getRegClass(JoinVReg);
|
||||
unsigned Threshold = allocatableRCRegs_[RC].count() * 2;
|
||||
unsigned Length = li_->getApproximateInstructionCount(JoinVInt);
|
||||
float Ratio = 1.0 / Threshold;
|
||||
if (Length > Threshold &&
|
||||
(((float)std::distance(mri_->use_nodbg_begin(JoinVReg),
|
||||
mri_->use_nodbg_end()) / Length) < Ratio)) {
|
||||
mri_->setRegAllocationHint(JoinVInt.reg, 0, JoinPReg);
|
||||
++numAborts;
|
||||
DEBUG(dbgs() << "\tMay tie down a physical register, abort!\n");
|
||||
Again = true; // May be possible to coalesce later.
|
||||
return false;
|
||||
}
|
||||
const TargetRegisterClass *RC = mri_->getRegClass(JoinVReg);
|
||||
unsigned Threshold = allocatableRCRegs_[RC].count() * 2;
|
||||
unsigned Length = li_->getApproximateInstructionCount(JoinVInt);
|
||||
float Ratio = 1.0 / Threshold;
|
||||
if (Length > Threshold &&
|
||||
(((float)std::distance(mri_->use_nodbg_begin(JoinVReg),
|
||||
mri_->use_nodbg_end()) / Length) < Ratio)) {
|
||||
mri_->setRegAllocationHint(JoinVInt.reg, 0, JoinPReg);
|
||||
++numAborts;
|
||||
DEBUG(dbgs() << "\tMay tie down a physical register, abort!\n");
|
||||
Again = true; // May be possible to coalesce later.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user