Remove PHIElimination's private copy of SkipPHIsAndLabels.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120918 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Cameron Zwarich 2010-12-04 20:40:15 +00:00
parent 1292c22645
commit 2a7942926b
2 changed files with 2 additions and 31 deletions

View File

@ -100,7 +100,7 @@ bool llvm::PHIElimination::EliminatePHINodes(MachineFunction &MF,
// Get an iterator to the first instruction after the last PHI node (this may
// also be the end of the basic block).
MachineBasicBlock::iterator AfterPHIsIt = SkipPHIsAndLabels(MBB, MBB.begin());
MachineBasicBlock::iterator AfterPHIsIt = MBB.SkipPHIsAndLabels(MBB.begin());
while (MBB.front().isPHI())
LowerAtomicPHINode(MBB, AfterPHIsIt);
@ -164,7 +164,7 @@ llvm::PHIElimination::FindCopyInsertPoint(MachineBasicBlock &MBB,
}
// Make sure the copy goes after any phi nodes however.
return SkipPHIsAndLabels(MBB, InsertPoint);
return MBB.SkipPHIsAndLabels(InsertPoint);
}
/// LowerAtomicPHINode - Lower the PHI node at the top of the specified block,

View File

@ -69,35 +69,6 @@ namespace llvm {
MachineBasicBlock &SuccMBB,
unsigned SrcReg);
// SkipPHIsAndLabels - Copies need to be inserted after phi nodes and
// also after any exception handling labels: in landing pads execution
// starts at the label, so any copies placed before it won't be executed!
// We also deal with DBG_VALUEs, which are a bit tricky:
// PHI
// DBG_VALUE
// LABEL
// Here the DBG_VALUE needs to be skipped, and if it refers to a PHI it
// needs to be annulled or, better, moved to follow the label, as well.
// PHI
// DBG_VALUE
// no label
// Here it is not a good idea to skip the DBG_VALUE.
// FIXME: For now we skip and annul all DBG_VALUEs, maximally simple and
// maximally stupid.
MachineBasicBlock::iterator SkipPHIsAndLabels(MachineBasicBlock &MBB,
MachineBasicBlock::iterator I) {
// Rather than assuming that EH labels come before other kinds of labels,
// just skip all labels.
while (I != MBB.end() &&
(I->isPHI() || I->isLabel() || I->isDebugValue())) {
if (I->isDebugValue() && I->getNumOperands()==3 &&
I->getOperand(0).isReg())
I->getOperand(0).setReg(0U);
++I;
}
return I;
}
typedef std::pair<unsigned, unsigned> BBVRegPair;
typedef DenseMap<BBVRegPair, unsigned> VRegPHIUse;