diff options
Diffstat (limited to 'llvm/lib/CodeGen/WasmEHPrepare.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/WasmEHPrepare.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/WasmEHPrepare.cpp b/llvm/lib/CodeGen/WasmEHPrepare.cpp index 361f185243b1..cc04807e8455 100644 --- a/llvm/lib/CodeGen/WasmEHPrepare.cpp +++ b/llvm/lib/CodeGen/WasmEHPrepare.cpp @@ -80,6 +80,7 @@ #include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/CodeGen/Passes.h" #include "llvm/CodeGen/WasmEHFuncInfo.h" +#include "llvm/IR/EHPersonalities.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/IntrinsicsWebAssembly.h" #include "llvm/InitializePasses.h" @@ -209,6 +210,12 @@ bool WasmEHPrepare::prepareEHPads(Function &F) { if (CatchPads.empty() && CleanupPads.empty()) return false; + if (!F.hasPersonalityFn() || + !isScopedEHPersonality(classifyEHPersonality(F.getPersonalityFn()))) { + report_fatal_error("Function '" + F.getName() + + "' does not have a correct Wasm personality function " + "'__gxx_wasm_personality_v0'"); + } assert(F.hasPersonalityFn() && "Personality function not found"); // __wasm_lpad_context global variable. |
