summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenFunction.h
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2018-05-31 22:18:13 +0000
committerHeejin Ahn <aheejin@gmail.com>2018-05-31 22:18:13 +0000
commitc6479199336213dde8cbcb575f3a83cfe5ae22a2 (patch)
tree9a3b22696dc2645e9b204bd6431f3d6d95643af5 /clang/lib/CodeGen/CodeGenFunction.h
parent9a6c0bdcbd387c67fc3016db40f7d261bd0691bc (diff)
downloadbcm5719-llvm-c6479199336213dde8cbcb575f3a83cfe5ae22a2.tar.gz
bcm5719-llvm-c6479199336213dde8cbcb575f3a83cfe5ae22a2.zip
[WebAssembly] Use Windows EH instructions for Wasm EH
Summary: Because wasm control flow needs to be structured, using WinEH instructions to support wasm EH brings several benefits. This patch makes wasm EH uses Windows EH instructions, with some changes: 1. Because wasm uses a single catch block to catch all C++ exceptions, this merges all catch clauses into a single catchpad, within which we test the EH selector as in Itanium EH. 2. Generates a call to `__clang_call_terminate` in case a cleanup throws. Wasm does not have a runtime to handle this. 3. In case there is no catch-all clause, inserts a call to `__cxa_rethrow` at the end of a catchpad in order to unwind to an enclosing EH scope. Reviewers: majnemer, dschuff Subscribers: jfb, sbc100, jgravelle-google, sunfish, cfe-commits Differential Revision: https://reviews.llvm.org/D44931 llvm-svn: 333703
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h
index 56b07e5f853..3ee66b007b4 100644
--- a/clang/lib/CodeGen/CodeGenFunction.h
+++ b/clang/lib/CodeGen/CodeGenFunction.h
@@ -877,7 +877,8 @@ public:
llvm::BasicBlock *getEHResumeBlock(bool isCleanup);
llvm::BasicBlock *getEHDispatchBlock(EHScopeStack::stable_iterator scope);
- llvm::BasicBlock *getMSVCDispatchBlock(EHScopeStack::stable_iterator scope);
+ llvm::BasicBlock *
+ getFuncletEHDispatchBlock(EHScopeStack::stable_iterator scope);
/// An object to manage conditionally-evaluated expressions.
class ConditionalEvaluation {
OpenPOWER on IntegriCloud