summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
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 /llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp
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 'llvm/lib/Target/WebAssembly/WebAssemblyRuntimeLibcallSignatures.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud