mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-19 04:32:19 +00:00
Add the MachineInstrSpan class.
MachineInstrSpan is initialized with a MachineBasicBlock::iterator, and is intended to track which instructions are inserted before/after that instruction from the time the MachineInstrSpan is created. It provides a begin()/end() interface to walk the range of instructions inserted around the initial instruction (including that initial instruction). It also provides a getInitial() interface to return the initial iterator. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188436 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
03fe68e0a9
commit
3bbd96e90b
@ -733,6 +733,31 @@ template <> struct GraphTraits<Inverse<const MachineBasicBlock*> > {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// MachineInstrSpan provides an interface to get an iteration range
|
||||||
|
/// containing the instruction it was initialized with, along with all
|
||||||
|
/// those instructions inserted prior to or following that instruction
|
||||||
|
/// at some point after the MachineInstrSpan is constructed.
|
||||||
|
class MachineInstrSpan {
|
||||||
|
MachineBasicBlock &MBB;
|
||||||
|
MachineBasicBlock::iterator I, B, E;
|
||||||
|
public:
|
||||||
|
MachineInstrSpan(MachineBasicBlock::iterator I)
|
||||||
|
: MBB(*I->getParent()),
|
||||||
|
I(I),
|
||||||
|
B(I == MBB.begin() ? MBB.end() : llvm::prior(I)),
|
||||||
|
E(llvm::next(I)) {}
|
||||||
|
|
||||||
|
MachineBasicBlock::iterator begin() {
|
||||||
|
return B == MBB.end() ? MBB.begin() : llvm::next(B);
|
||||||
|
}
|
||||||
|
MachineBasicBlock::iterator end() { return E; }
|
||||||
|
bool empty() { return begin() == end(); }
|
||||||
|
|
||||||
|
MachineBasicBlock::iterator getInitial() { return I; }
|
||||||
|
};
|
||||||
|
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user