mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-20 09:24:58 +00:00
Remove ugly and horrible code. It's not necessary for correctness, and can be added back later if it causes code quality issues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44986 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f9785f92b6
commit
4ba08ecbcf
@ -330,43 +330,6 @@ void StrongPHIElimination::processPHIUnion(MachineInstr* Inst,
|
|||||||
LiveVariables::VarInfo& CInfo = LV.getVarInfo(child->getReg());
|
LiveVariables::VarInfo& CInfo = LV.getVarInfo(child->getReg());
|
||||||
|
|
||||||
if (isLiveOut(Info, CInfo.DefInst->getParent())) {
|
if (isLiveOut(Info, CInfo.DefInst->getParent())) {
|
||||||
interferences.insert(child);
|
|
||||||
} else if (isLiveIn(Info, CInfo.DefInst->getParent()) ||
|
|
||||||
Info.DefInst->getParent() == CInfo.DefInst->getParent()) {
|
|
||||||
// FIXME: Add (p, c) to possible local interferences
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!visited.count(child)) {
|
|
||||||
worklist.push_back(child);
|
|
||||||
inserted = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (interferences.size() == 1) {
|
|
||||||
DomForestNode* child = *interferences.begin();
|
|
||||||
|
|
||||||
unsigned numParentCopies = 0;
|
|
||||||
unsigned numChildCopies = 0;
|
|
||||||
for (int i = Inst->getNumOperands() - 1; i >= 2; i-=2) {
|
|
||||||
unsigned SrcReg = Inst->getOperand(i-1).getReg();
|
|
||||||
if (SrcReg == DFNode->getReg()) numParentCopies++;
|
|
||||||
else if (SrcReg == child->getReg()) numChildCopies++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (numParentCopies < numChildCopies) {
|
|
||||||
// Insert copies for child
|
|
||||||
for (int i = Inst->getNumOperands() - 1; i >= 2; i-=2) {
|
|
||||||
if (Inst->getOperand(i-1).getReg() == child->getReg()) {
|
|
||||||
unsigned SrcReg = child->getReg();
|
|
||||||
MachineBasicBlock* From = Inst->getOperand(i).getMBB();
|
|
||||||
|
|
||||||
Waiting[From].push_back(std::make_pair(SrcReg, DestReg));
|
|
||||||
PHIUnion.erase(SrcReg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: Make child's children parent's children
|
|
||||||
} else {
|
|
||||||
// Insert copies for parent
|
// Insert copies for parent
|
||||||
for (int i = Inst->getNumOperands() - 1; i >= 2; i-=2) {
|
for (int i = Inst->getNumOperands() - 1; i >= 2; i-=2) {
|
||||||
if (Inst->getOperand(i-1).getReg() == DFNode->getReg()) {
|
if (Inst->getOperand(i-1).getReg() == DFNode->getReg()) {
|
||||||
@ -377,17 +340,14 @@ void StrongPHIElimination::processPHIUnion(MachineInstr* Inst,
|
|||||||
PHIUnion.erase(SrcReg);
|
PHIUnion.erase(SrcReg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (isLiveIn(Info, CInfo.DefInst->getParent()) ||
|
||||||
|
Info.DefInst->getParent() == CInfo.DefInst->getParent()) {
|
||||||
|
// FIXME: Add (p, c) to possible local interferences
|
||||||
}
|
}
|
||||||
} else if (interferences.size() > 1) {
|
|
||||||
// Insert copies for parent
|
if (!visited.count(child)) {
|
||||||
for (int i = Inst->getNumOperands() - 1; i >= 2; i-=2) {
|
worklist.push_back(child);
|
||||||
if (Inst->getOperand(i-1).getReg() == DFNode->getReg()) {
|
inserted = true;
|
||||||
unsigned SrcReg = DFNode->getReg();
|
|
||||||
MachineBasicBlock* From = Inst->getOperand(i).getMBB();
|
|
||||||
|
|
||||||
Waiting[From].push_back(std::make_pair(SrcReg, DestReg));
|
|
||||||
PHIUnion.erase(SrcReg);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user