mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
Handle DBG_VALUE mixed with labels when doing PHI
elimination. Before a DBG_VALUE could affect codegen. The solution here is imperfect and not final. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96318 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a3b1119977
commit
6e303cb9fa
@ -109,12 +109,29 @@ namespace llvm {
|
||||
// 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()))
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user