15 #ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYEXCEPTIONINFO_H 16 #define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYEXCEPTIONINFO_H 24 class MachineDominatorTree;
25 class MachineDominanceFrontier;
47 std::vector<WebAssemblyException *> SubExceptions;
48 std::vector<MachineBasicBlock *> Blocks;
70 return BlockSet.
count(MBB);
74 Blocks.push_back(MBB);
94 using iterator =
typename std::vector<WebAssemblyException *>::const_iterator;
107 CurException; CurException = CurException->ParentException)
121 std::vector<WebAssemblyException *> TopLevelExceptions;
139 void releaseMemory()
override;
144 bool empty()
const {
return TopLevelExceptions.empty(); }
149 return BBMap.lookup(MBB);
162 TopLevelExceptions.push_back(WE);
void DeleteContainerPointers(Container &C)
For a container of pointers, deletes the pointers and then clears the container.
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
void reverseBlock(unsigned From=0)
std::vector< WebAssemblyException * > & getSubExceptions()
This class represents lattice values for constants.
A Module instance is used to store all the information related to an LLVM module. ...
~WebAssemblyExceptionInfo() override
void print(raw_ostream &OS, unsigned Depth=0) const
MachineBasicBlock * getHeader() const
block_iterator block_begin() const
This file contains the entry points for global functions defined in the LLVM WebAssembly back-end...
iterator_range< block_iterator > blocks() const
WebAssemblyExceptionInfo()
WebAssemblyException(MachineBasicBlock *EHPad)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
const WebAssemblyException & operator=(const WebAssemblyException &)=delete
std::vector< MachineBasicBlock * > & getBlocksVector()
void initializeWebAssemblyExceptionInfoPass(PassRegistry &)
void addSubException(WebAssemblyException *E)
auto reverse(ContainerTy &&C, typename std::enable_if< has_rbegin< ContainerTy >::value >::type *=nullptr) -> decltype(make_range(C.rbegin(), C.rend()))
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
void addBlock(MachineBasicBlock *MBB)
ArrayRef< MachineBasicBlock * > getBlocks() const
void changeExceptionFor(MachineBasicBlock *MBB, WebAssemblyException *WE)
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
std::pair< iterator, bool > insert(PtrType Ptr)
Inserts Ptr if and only if there is no element in the container equal to Ptr.
MachineBasicBlock * getEHPad() const
Represent the analysis usage information of a pass.
size_type count(ConstPtrType Ptr) const
count - Return 1 if the specified pointer is in the set, 0 otherwise.
void addTopLevelException(WebAssemblyException *WE)
WebAssemblyException * getExceptionFor(const MachineBasicBlock *MBB) const
block_iterator block_end() const
iterator_range< T > make_range(T x, T y)
Convenience function for iterating over sub-ranges.
BlockVerifier::State From
bool contains(const MachineBasicBlock *MBB) const
void setParentException(WebAssemblyException *WE)
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
WebAssemblyException * getParentException() const
A range adaptor for a pair of iterators.
typename std::vector< WebAssemblyException * >::const_iterator iterator
unsigned getExceptionDepth() const
bool contains(const WebAssemblyException *WE) const
void reserveBlocks(unsigned Size)
const std::vector< WebAssemblyException * > & getSubExceptions() const
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
typename ArrayRef< MachineBasicBlock * >::const_iterator block_iterator
unsigned getNumBlocks() const
This class implements an extremely fast bulk output stream that can only output to a stream...
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...