aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMark Seaborn <mseaborn@chromium.org>2013-10-16 13:06:24 -0700
committerMark Seaborn <mseaborn@chromium.org>2013-10-16 13:06:24 -0700
commitf058041de6c69aadafcd030c62678d4244ba2cf7 (patch)
tree952b0246ef3e6ed26aef9dacdf3c8f9f3d4c3239 /tools
parent98d05124206fb054a3446f2e9a07cefb8faa830d (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.cpp1
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);