diff options
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyUtilities.h')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyUtilities.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyUtilities.h b/llvm/lib/Target/WebAssembly/WebAssemblyUtilities.h new file mode 100644 index 000000000000..26cf84de89b9 --- /dev/null +++ b/llvm/lib/Target/WebAssembly/WebAssemblyUtilities.h @@ -0,0 +1,51 @@ +//===-- WebAssemblyUtilities - WebAssembly Utility Functions ---*- C++ -*-====// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// This file contains the declaration of the WebAssembly-specific +/// utility functions. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYUTILITIES_H +#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYUTILITIES_H + +#include "llvm/CodeGen/MachineBasicBlock.h" + +namespace llvm { + +class WebAssemblyFunctionInfo; + +namespace WebAssembly { + +bool isChild(const MachineInstr &MI, const WebAssemblyFunctionInfo &MFI); +bool mayThrow(const MachineInstr &MI); + +// Exception-related function names +extern const char *const ClangCallTerminateFn; +extern const char *const CxaBeginCatchFn; +extern const char *const CxaRethrowFn; +extern const char *const StdTerminateFn; +extern const char *const PersonalityWrapperFn; + +/// Return the "bottom" block of an entity, which can be either a MachineLoop or +/// WebAssemblyException. This differs from MachineLoop::getBottomBlock in that +/// it works even if the entity is discontiguous. +template <typename T> MachineBasicBlock *getBottom(const T *Unit) { + MachineBasicBlock *Bottom = Unit->getHeader(); + for (MachineBasicBlock *MBB : Unit->blocks()) + if (MBB->getNumber() > Bottom->getNumber()) + Bottom = MBB; + return Bottom; +} + +} // end namespace WebAssembly + +} // end namespace llvm + +#endif |
