summaryrefslogtreecommitdiff
path: root/src/tools/asm2wasm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/asm2wasm.cpp')
-rw-r--r--src/tools/asm2wasm.cpp28
1 files changed, 13 insertions, 15 deletions
diff --git a/src/tools/asm2wasm.cpp b/src/tools/asm2wasm.cpp
index cbc3c486b..3ce140b04 100644
--- a/src/tools/asm2wasm.cpp
+++ b/src/tools/asm2wasm.cpp
@@ -18,6 +18,8 @@
// asm2wasm console tool
//
+#include <exception>
+
#include "ast/trapping.h"
#include "support/colors.h"
#include "support/command-line.h"
@@ -78,21 +80,17 @@ int main(int argc, const char *argv[]) {
[](Options *o, const std::string &) {
std::cerr << "--no-opts is deprecated (use -O0, etc.)\n";
})
- .add("--emit-potential-traps", "-i", "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", "-i", "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", "-i", "Avoid instructions that might trap, handling them exactly like JS would", Options::Arguments::Zero,
- [&trapMode](Options *o, const std::string &) {
- trapMode = TrapMode::JS;
- })
- .add("--imprecise", "-i", "Imprecise optimizations (old name for --emit-potential-traps)", Options::Arguments::Zero,
- [&trapMode](Options *o, const std::string &) {
- trapMode = TrapMode::Allow;
+ .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("--wasm-only", "-w", "Input is in WebAssembly-only format, and not actually valid asm.js", Options::Arguments::Zero,
[&wasmOnly](Options *o, const std::string &) {