14#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYSORTREGION_H
15#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYSORTREGION_H
23class MachineBasicBlock;
26class WebAssemblyException;
27class WebAssemblyExceptionInfo;
29namespace WebAssembly {
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) {}
This file defines the DenseMap class.
MachineBasicBlock * getHeader() const override
ConcreteSortRegion(const T *Unit)
bool isLoop() const override
bool contains(const MachineBasicBlock *MBB) const override
iterator_range< block_iterator > blocks() const override
unsigned getNumBlocks() const override
const SortRegion * getRegionFor(const MachineBasicBlock *MBB)
SortRegionInfo(const MachineLoopInfo &MLI, const WebAssemblyExceptionInfo &WEI)
MachineBasicBlock * getBottom(const SortRegion *R)
virtual bool contains(const MachineBasicBlock *MBB) const =0
virtual unsigned getNumBlocks() const =0
virtual iterator_range< block_iterator > blocks() const =0
virtual MachineBasicBlock * getHeader() const =0
virtual bool isLoop() const =0
typename ArrayRef< MachineBasicBlock * >::const_iterator block_iterator
virtual ~SortRegion()=default
A range adaptor for a pair of iterators.
This provides a very simple, boring adaptor for a begin and end iterator into a range type.
This is an optimization pass for GlobalISel generic memory operations.