mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-08 03:30:22 +00:00
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:
parent
1292c22645
commit
2a7942926b
@ -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,
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user