mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-09 13:33:17 +00:00
Refactor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124300 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
91585098ef
commit
55d20e8ff1
@ -501,6 +501,35 @@ namespace {
|
||||
};
|
||||
}
|
||||
|
||||
/// ProcessSDDbgValues - Process SDDbgValues assoicated with this node.
|
||||
static void ProcessSDDbgValues(SDNode *N, SelectionDAG *DAG,
|
||||
InstrEmitter &Emitter,
|
||||
SmallVector<std::pair<unsigned, MachineInstr*>, 32> &Orders,
|
||||
DenseMap<SDValue, unsigned> &VRBaseMap,
|
||||
unsigned Order) {
|
||||
if (!N->getHasDebugValue())
|
||||
return;
|
||||
|
||||
// Opportunistically insert immediate dbg_value uses, i.e. those with source
|
||||
// order number right after the N.
|
||||
MachineBasicBlock *BB = Emitter.getBlock();
|
||||
MachineBasicBlock::iterator InsertPos = Emitter.getInsertPos();
|
||||
SmallVector<SDDbgValue*,2> &DVs = DAG->GetDbgValues(N);
|
||||
for (unsigned i = 0, e = DVs.size(); i != e; ++i) {
|
||||
if (DVs[i]->isInvalidated())
|
||||
continue;
|
||||
unsigned DVOrder = DVs[i]->getOrder();
|
||||
if (!Order || DVOrder == ++Order) {
|
||||
MachineInstr *DbgMI = Emitter.EmitDbgValue(DVs[i], VRBaseMap);
|
||||
if (DbgMI) {
|
||||
Orders.push_back(std::make_pair(DVOrder, DbgMI));
|
||||
BB->insert(InsertPos, DbgMI);
|
||||
}
|
||||
DVs[i]->setIsInvalidated();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ProcessSourceNode - Process nodes with source order numbers. These are added
|
||||
// to a vector which EmitSchedule uses to determine how to insert dbg_value
|
||||
// instructions in the right order.
|
||||
@ -521,25 +550,7 @@ static void ProcessSourceNode(SDNode *N, SelectionDAG *DAG,
|
||||
}
|
||||
|
||||
Orders.push_back(std::make_pair(Order, prior(Emitter.getInsertPos())));
|
||||
if (!N->getHasDebugValue())
|
||||
return;
|
||||
// Opportunistically insert immediate dbg_value uses, i.e. those with source
|
||||
// order number right after the N.
|
||||
MachineBasicBlock::iterator InsertPos = Emitter.getInsertPos();
|
||||
SmallVector<SDDbgValue*,2> &DVs = DAG->GetDbgValues(N);
|
||||
for (unsigned i = 0, e = DVs.size(); i != e; ++i) {
|
||||
if (DVs[i]->isInvalidated())
|
||||
continue;
|
||||
unsigned DVOrder = DVs[i]->getOrder();
|
||||
if (DVOrder == ++Order) {
|
||||
MachineInstr *DbgMI = Emitter.EmitDbgValue(DVs[i], VRBaseMap);
|
||||
if (DbgMI) {
|
||||
Orders.push_back(std::make_pair(DVOrder, DbgMI));
|
||||
BB->insert(InsertPos, DbgMI);
|
||||
}
|
||||
DVs[i]->setIsInvalidated();
|
||||
}
|
||||
}
|
||||
ProcessSDDbgValues(N, DAG, Emitter, Orders, VRBaseMap, Order);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user