diff options
author | Derek Schuff <dschuff@google.com> | 2016-08-18 15:27:25 +0000 |
---|---|---|
committer | Derek Schuff <dschuff@google.com> | 2016-08-18 15:27:25 +0000 |
commit | ccdceda1282fa48f304e0cd0c1b6f6861be7dcd3 (patch) | |
tree | 3fa7cd28e40ef1908073833b2025ee80cf0c33e6 /llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | |
parent | 1d0560b14dc214d108072057dfe7ab5d79bd7e67 (diff) | |
download | bcm5719-llvm-ccdceda1282fa48f304e0cd0c1b6f6861be7dcd3.tar.gz bcm5719-llvm-ccdceda1282fa48f304e0cd0c1b6f6861be7dcd3.zip |
[WebAssembly] Refactor WebAssemblyLowerEmscriptenException pass for setjmp/longjmp
This patch changes the code structure of
WebAssemblyLowerEmscriptenException pass to support both exception
handling and setjmp/longjmp. It also changes the name of the pass and
the source file.
1. Change the file/pass name to WebAssemblyLowerEmscriptenExceptions ->
WebAssemblyLowerEmscriptenEHSjLj to make it clear that it supports both
EH and SjLj
2. List function / global variable names at the top so they
can be changed easily
3. Some cosmetic changes
Patch by Heejin Ahn
Differential Revision: https://reviews.llvm.org/D23588
llvm-svn: 279075
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp index e442cb1cded..1d21f2b33fd 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp @@ -30,18 +30,24 @@ using namespace llvm; #define DEBUG_TYPE "wasm" // Emscripten's asm.js-style exception handling -static cl::opt<bool> EnableEmExceptionHandling( +static cl::opt<bool> EnableEmException( "enable-emscripten-cxx-exceptions", cl::desc("WebAssembly Emscripten-style exception handling"), cl::init(false)); +// Emscripten's asm.js-style setjmp/longjmp handling +static cl::opt<bool> EnableEmSjLj( + "enable-emscripten-sjlj", + cl::desc("WebAssembly Emscripten-style setjmp/longjmp handling"), + cl::init(false)); + extern "C" void LLVMInitializeWebAssemblyTarget() { // Register the target. RegisterTargetMachine<WebAssemblyTargetMachine> X(TheWebAssemblyTarget32); RegisterTargetMachine<WebAssemblyTargetMachine> Y(TheWebAssemblyTarget64); // Register exception handling pass to opt - initializeWebAssemblyLowerEmscriptenExceptionsPass( + initializeWebAssemblyLowerEmscriptenEHSjLjPass( *PassRegistry::getPassRegistry()); } @@ -160,8 +166,9 @@ void WebAssemblyPassConfig::addIRPasses() { addPass(createWebAssemblyOptimizeReturned()); // Handle exceptions. - if (EnableEmExceptionHandling) - addPass(createWebAssemblyLowerEmscriptenExceptions()); + if (EnableEmException || EnableEmSjLj) + addPass(createWebAssemblyLowerEmscriptenEHSjLj(EnableEmException, + EnableEmSjLj)); TargetPassConfig::addIRPasses(); } |