mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 04:24:00 +00:00
Implement depth_first and inverse_depth_first range factory functions.
Also updated as many loops as I could find using df_begin/idf_begin - strangely I found no uses of idf_begin. Is that just used out of tree? Also a few places couldn't use df_begin because either they used the member functions of the depth first iterators or had specific ordering constraints (I added a comment in the latter case). Based on a patch by Jim Grosbach. (Jim - you just had iterator_range<T> where you needed iterator_range<idf_iterator<T>>) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206016 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -193,12 +193,11 @@ void StackColoring::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
}
|
||||
|
||||
void StackColoring::dump() const {
|
||||
for (df_iterator<MachineFunction*> FI = df_begin(MF), FE = df_end(MF);
|
||||
FI != FE; ++FI) {
|
||||
DEBUG(dbgs()<<"Inspecting block #"<<BasicBlocks.lookup(*FI)<<
|
||||
" ["<<FI->getName()<<"]\n");
|
||||
for (MachineBasicBlock *MBB : depth_first(MF)) {
|
||||
DEBUG(dbgs() << "Inspecting block #" << BasicBlocks.lookup(MBB) << " ["
|
||||
<< MBB->getName() << "]\n");
|
||||
|
||||
LivenessMap::const_iterator BI = BlockLiveness.find(*FI);
|
||||
LivenessMap::const_iterator BI = BlockLiveness.find(MBB);
|
||||
assert(BI != BlockLiveness.end() && "Block not found");
|
||||
const BlockLifetimeInfo &BlockInfo = BI->second;
|
||||
|
||||
@ -231,20 +230,19 @@ unsigned StackColoring::collectMarkers(unsigned NumSlot) {
|
||||
// NOTE: We use the a reverse-post-order iteration to ensure that we obtain a
|
||||
// deterministic numbering, and because we'll need a post-order iteration
|
||||
// later for solving the liveness dataflow problem.
|
||||
for (df_iterator<MachineFunction*> FI = df_begin(MF), FE = df_end(MF);
|
||||
FI != FE; ++FI) {
|
||||
for (MachineBasicBlock *MBB : depth_first(MF)) {
|
||||
|
||||
// Assign a serial number to this basic block.
|
||||
BasicBlocks[*FI] = BasicBlockNumbering.size();
|
||||
BasicBlockNumbering.push_back(*FI);
|
||||
BasicBlocks[MBB] = BasicBlockNumbering.size();
|
||||
BasicBlockNumbering.push_back(MBB);
|
||||
|
||||
// Keep a reference to avoid repeated lookups.
|
||||
BlockLifetimeInfo &BlockInfo = BlockLiveness[*FI];
|
||||
BlockLifetimeInfo &BlockInfo = BlockLiveness[MBB];
|
||||
|
||||
BlockInfo.Begin.resize(NumSlot);
|
||||
BlockInfo.End.resize(NumSlot);
|
||||
|
||||
for (MachineInstr &MI : **FI) {
|
||||
for (MachineInstr &MI : *MBB) {
|
||||
if (MI.getOpcode() != TargetOpcode::LIFETIME_START &&
|
||||
MI.getOpcode() != TargetOpcode::LIFETIME_END)
|
||||
continue;
|
||||
|
Reference in New Issue
Block a user