summaryrefslogtreecommitdiff
path: root/src/tools/s2wasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/s2wasm.cpp')
-rw-r--r--src/tools/s2wasm.cpp32
1 files changed, 14 insertions, 18 deletions
diff --git a/src/tools/s2wasm.cpp b/src/tools/s2wasm.cpp
index 559188d1f..8411d4046 100644
--- a/src/tools/s2wasm.cpp
+++ b/src/tools/s2wasm.cpp
@@ -15,9 +15,11 @@
*/
//
-// wasm2asm console tool
+// s2wasm console tool
//
+#include <exception>
+
#include "ast/trapping.h"
#include "support/colors.h"
#include "support/command-line.h"
@@ -83,23 +85,17 @@ int main(int argc, const char *argv[]) {
[&allowMemoryGrowth](Options *, const std::string &) {
allowMemoryGrowth = true;
})
- .add("--emit-potential-traps", "",
- "Emit instructions that might trap, like div/rem of 0",
- Options::Arguments::Zero,
- [&trapMode](Options *o, const std::string &) {
- trapMode = TrapMode::Allow;
- })
- .add("--emit-clamped-potential-traps", "",
- "Clamp instructions that might trap, like float => int",
- Options::Arguments::Zero,
- [&trapMode](Options *o, const std::string &) {
- trapMode = TrapMode::Clamp;
- })
- .add("--emit-jsified-potential-traps", "",
- "Avoid instructions that might trap, handling them exactly like JS would",
- Options::Arguments::Zero,
- [&trapMode](Options *o, const std::string &) {
- trapMode = TrapMode::JS;
+ .add("--trap-mode", "",
+ "Strategy for handling potentially trapping instructions. Valid "
+ "values are \"allow\", \"js\", and \"clamp\"",
+ Options::Arguments::One,
+ [&trapMode](Options *o, const std::string &argument) {
+ try {
+ trapMode = trapModeFromString(argument);
+ } catch (std::invalid_argument e) {
+ std::cerr << "Error: " << e.what() << "\n";
+ exit(EXIT_FAILURE);
+ }
})
.add("--emscripten-glue", "-e", "Generate emscripten glue",
Options::Arguments::Zero,