diff options
author | Mark Seaborn <mseaborn@chromium.org> | 2013-10-16 13:06:24 -0700 |
---|---|---|
committer | Mark Seaborn <mseaborn@chromium.org> | 2013-10-16 13:06:24 -0700 |
commit | f058041de6c69aadafcd030c62678d4244ba2cf7 (patch) | |
tree | 952b0246ef3e6ed26aef9dacdf3c8f9f3d4c3239 /tools | |
parent | 98d05124206fb054a3446f2e9a07cefb8faa830d (diff) |
Add PNaClSjLjEH pass to implement C++ exception handling using setjmp()+longjmp()
There are two parts to this:
* PNaClSjLjEH.cpp expands out the "invoke", "landingpad" and "resume"
instructions, modifying the control flow to use setjmp().
* ExceptionInfoWriter.cpp lowers landingpads' clause lists to data
that PNaCl's C++ runtime library will interpret. This part will be
reused when we drop the SjLj part and create a stable ABI for
zero-cost EH.
This pass isn't enabled in PNaClABISimplify yet: I'll do that in a
separate change.
BUG=https://code.google.com/p/nativeclient/issues/detail?id=3696
TEST=*.ll tests (also tested end-to-end: plumbing for this will follow later)
Review URL: https://codereview.chromium.org/24777002
Diffstat (limited to 'tools')
-rw-r--r-- | tools/opt/opt.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp index e0ea24a9d8..f13ba04229 100644 --- a/tools/opt/opt.cpp +++ b/tools/opt/opt.cpp @@ -629,6 +629,7 @@ int main(int argc, char **argv) { initializeInsertDivideCheckPass(Registry); initializePNaClABIVerifyFunctionsPass(Registry); initializePNaClABIVerifyModulePass(Registry); + initializePNaClSjLjEHPass(Registry); initializePromoteI1OpsPass(Registry); initializePromoteIntegersPass(Registry); initializeRemoveAsmMemoryPass(Registry); |