Go to the documentation of this file.
14 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYSORTREGION_H
15 #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYSORTREGION_H
23 class MachineBasicBlock;
25 class MachineLoopInfo;
26 class WebAssemblyException;
27 class WebAssemblyExceptionInfo;
29 namespace WebAssembly {
40 virtual bool isLoop()
const = 0;
50 return Unit->contains(
MBB);
52 unsigned getNumBlocks()
const override {
return Unit->getNumBlocks(); }
54 return Unit->blocks();
56 bool isLoop()
const override {
return false; }
74 : MLI(MLI), WEI(WEI) {}
virtual MachineBasicBlock * getHeader() const =0
This is an optimization pass for GlobalISel generic memory operations.
iterator_range< block_iterator > blocks() const override
typename ArrayRef< MachineBasicBlock * >::const_iterator block_iterator
virtual bool contains(const MachineBasicBlock *MBB) const =0
virtual ~SortRegion()=default
const SortRegion * getRegionFor(const MachineBasicBlock *MBB)
unsigned getNumBlocks() const override
virtual unsigned getNumBlocks() const =0
const_pointer const_iterator
bool isLoop() const override
ConcreteSortRegion(const T *Unit)
virtual iterator_range< block_iterator > blocks() const =0
MachineBasicBlock * getHeader() const override
virtual bool isLoop() const =0
SortRegionInfo(const MachineLoopInfo &MLI, const WebAssemblyExceptionInfo &WEI)
bool contains(const MachineBasicBlock *MBB) const override
A range adaptor for a pair of iterators.
MachineBasicBlock * getBottom(const SortRegion *R)